acwing:约数之和
等比数列求和 =
————————————2
只有保证没个乘项都是奇数才可能是奇数,如果有一个偶数则结果是偶数;
如果没2,其他质数都是奇数,所以要保证每项除第一个是1外其他数相加为偶数,由式子1就要有偶个其余项,则a为偶;——n^2
如果有2,不仅要满足上述条件还要满足:p=2的那项必须为奇数,由式子2,可知p=2那项分子始终为奇,分母为1;——2*n^2
终上所述:n^2,2*n^2满足要求
所以输入num,
1到n代入得到n^2或2*n^2的数满足要求,他们有sqrt(num)和sqrt(num/2)个;
num-奇数=偶数的
#include <bits/stdc++.h>
using namespace std;
long long t,n;
int main(int argc, char** argv) {
cin>>t;
for(int i=1;i<=t;i++){
cin>>n;
printf("Case %lld: %lld\n",i,n-(int)sqrt(n)-(int)sqrt(n/2));
}
return 0;
} 
京公网安备 11010502036488号