有n个数 a1、a2、a3……an开始都是0
现在进行操作 t从1~n依次增加
每次把下标是t的倍数的数都反转(0变成1,1变成0)
如果最后ai为0,那么称此时的i为好数。
现在对于给定的n,求这时候的好数个数。
n<=1e15
2
1
当一个数的因子是偶数个时,这个数就是好数,那么乘法的乘数都是成对出现的,只有两个乘数相同时才会使得一个数的因子是奇数个,所以1的平方、2的平方、3的平方……都是坏数
其实最初做这道题的时候,就是把数据搞几组出来,分析一下直接找规律,哪有什么分析……
#include<stdio.h>
#include<math.h>
int main()
{
long long n;
while(scanf("%lld",&n)!=EOF)
{
printf("%lld\n",n-(long long)sqrt(n));
}
return 0;
}