您的位置:首页 > 其它

LightOJ 1336 Sigma Function

2017-03-09 17:25 232 查看
/*
LightOJ 1336    Sigma Function http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1336 数论 奇偶性
题目求f(n)为偶数的个数
我们发现如果f(n)为奇数,则n为x^2,2*x^2,2^x三种形式,
因为2^x中已经包含剩下两种,
所以只需求x^2和2*x^2的个数即可求得答案。
*
打了半天表发现没用233333
*
*/

#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
//freopen("a.in","r",stdin);
int t;
scanf("%d",&t);
long long n;
int j=1;
while(t--)
{
scanf("%lld",&n);
long long ans=0;
for(long long i=1;i*i<=n;i++)
{
if(2*i*i<=n)
ans++;
ans++;
}
ans=n-ans;
printf("Case %d: %lld\n",j,ans);
j++;
}
return 0;

}

//打表
/*#include <cstdio>*/
//#include <algorithm>
//using namespace std;
//const int Nmax=10001;
//int prime[Nmax];
//int is_prime[Nmax];
//int cnt;
//int m[Nmax];
//int times[Nmax];
//int num;
//void get_prime()
//{
//for(int i=2;i<Nmax;i++)
//is_prime[i]=1;
//for(int i=2;i<Nmax;i++)
//{
//if(is_prime[i])
//{
//prime[++cnt]=i;
//for(int j=2;j*i<Nmax;j++)
//is_prime[i*j]=0;
//}
//}
//}

//int pow(int base,int n)
//{
//int ans=1;
//while(n>0)
//{
//if(n&1)
//ans*=base;
//base*=base;
//n>>=1;
//}
//return ans;
//}

//int check()
//{
//for(int i=1;i<=num;i++)
//{
//int a=pow(m[i],times[i]+1)-1;
//int b=m[i]-1;
//a/=b;
//if(!(a&1))
//return 1;
//}
//return 0;
//}

//void get(int n)
//{
//num=0;
//int i=1;
//while(prime[i]*prime[i]<=n)
//{
//if(n%prime[i]==0)
//{
//++num;
//times[num]=0;
//m[num]=prime[i];
//}
//while(n%prime[i]==0)
//{
//n/=prime[i];
//times[num]++;
//}
//i++;
//}
//if(n!=1)
//{
//++num;
//times[num]=1;
//m[num]=n;
//}
//}

//void print(int n)
//{
//int ans=0;
//for(int i=2;i<=n;i++)
//{
//get(i);
//ans+=check();
//}
//printf("%d:%d\n",n,ans);
//}

//int main()
//{
//get_prime();
//for(int n=1;n<=1000;n++)
//{
//print(n);
//}
//return 0;
/*}*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: