acwing:约数之和
(n)=(p10+p11+....+p1a1)*.....*(pk0+pk1+....+pkak)————————1
等比数列求和 =————————————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; }