牛客OI赛制测试赛2 D 星光晚餐

阅读: 评论:0

牛客OI赛制测试赛2 D 星光晚餐

牛客OI赛制测试赛2 D 星光晚餐

链接:
来源:牛客网

题目描述

Johnson和Nancy要在星光下吃晚餐。这是一件很浪漫的事情。

为了增加星光晚餐那浪漫的氛围,他拿出了一个神奇的魔法棒,并且可以按照一定的规则,改变天上星星的亮暗。

Johnson想考考Nancy,在他挥动魔法棒后,会有多少颗星星依旧闪耀在天空。他知道,Nancy一定会一口说出答案。

Nancy当然知道怎么做啦,但她想考考你!

Johnson先将天上n个星星排成一排,起初它们都是暗的。

他告诉他的妹子,他将挥动n次魔法棒,第i次挥动会将编号为i的正整数倍的星星的亮暗反转,即亮的星星转暗,暗的星星转亮。

Johnson想问Nancy,最终会有多少个星星依旧闪亮在天空。


输入描述:

一个整数n,含义请见题目描述。

输出描述:

一个整数ans,即n次操作后会有多少个星星依旧闪亮。
示例1

输入

复制
3

输出

复制
1
示例2

输入

复制
7

输出

复制
2

备注:

对于60%的数据:n≤2×10
6
对于100%的数据:n≤10
18

 

这道题目与开关灯问题比较相似,就是数据不知道大了多少倍。

开始大大暴力你会发现前三个都是1,再往后5个都是2,往后7个都是3,往后9个都是4....。

1 1 1 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4

那么定义一个数组a[1]=3,a[2]=8,a[3]&#,a[i]=j(表示到j之前的数为i)。

处理好数组按照这个规律可以过$60%$的。

然而我们并不满足:

现在我们再来观察a数组,3,8,15 这是不是平方数-1,每个数自变幻的临界点为每个平方数,显然的出结论$ans= sqrt n $,然而并不会证明。

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
long long n;    //注意开long long
int main()
{scanf("%lld",&n);n=sqrt(n);printf("%lld",n);
}

 

转载于:.html

本文发布于:2024-01-28 22:01:21,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170645048510583.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:赛制   晚餐   星光   测试   牛客
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23