有n个数 a[1],a[2],...,a[n]开始都是0
现在进行操作 t从1~n依次增加
每次把下标时t的倍数的数都反转(0变成1,1变成0)
如果最后a[i]为0,那么称此时的i为好数。
现在对于给定的n,求这时候的好数个数。
n<=1e15
Input
一个数n,表示有n个数。(n<=1e15)
Output
一个数,表示好数的个数。
Input示例
2
Output示例
1
答案就是n减去n以内的完全平方数
1 #include<iostream> 2 using namespace std; 3 #include<queue> 4 #include<cstdio> 5 #include<map> 6 #include<set> 7 typedef long long LL; 8 int main() 9 { 10 LL n; 11 cin>>n; 12 LL ans=n; 13 for (LL i=1;i*i<=n;i++) 14 { 15 ans--; 16 } 17 cout<<ans<<endl; 18 return 0; 19 }