题意:1~n (1 ≤ n ≤ e^12)中,因子和为偶数的有几个。
#include<cstdio>
#include<cmath>
using namespace std;
typedef long long LL;
LL n;
/*
在[1,n]中平方数或者是两倍的平方数的因子和为奇数
(满足2的更高次幂也一定是2的倍数,不用重复计算)
其中平方数有sqrt(n)个,两倍的平方数有sqrt(n/2)个
例如[1,5]中平方数为1、4,2*平方数为4
*/
int main()
{
int T,kase=0;
scanf("%d",&T);
while(T--)
{
scanf("%lld",&n);
LL ans=0;
ans+=(LL)sqrt(n/1.0);
ans+=(LL)sqrt(n/2.0);
ans=n-ans;
printf("Case %d: %lld\n",++kase,ans);
}
return 0;
}