基础数学1004 LightOJ 1336

来源:互联网 发布:中联软件 编辑:程序博客网 时间:2024/05/18 13:07

题意:
给你一个n,问你1~n里约数和是偶数的数的个数
思路:
题给的第二个公式就是通过Sum=(1+p1+p1^2+…p1^e1)(1+p2+p2^2+…p2^e2)…推来的
我们看上面这个公式发现
1.p==2,2的那部分必然是奇数
2.如果e为偶数,那部分必然是奇数
所以我们得到
1.sqrt(x)*sqrt(x)==x,Sum(x)必然是奇数
2.2*sqrt(x)*sqrt(x)==x,Sum(x)必然是奇数
Ans=Area-sqrt(Area)-sqrt(Area/2)

#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<math.h>#include<queue>#include<stack>#include<string>#include<vector>#include<map>#include<set>using namespace std;#define lowbit(x) (x&(-x))typedef long long LL;const int maxn = 100005;const int inf=(1<<28)-1;int main(){    int T,Case=0;    scanf("%d",&T);    while(T--)    {        LL n;        scanf("%lld",&n);        LL Ans=n;        Ans-=(int)sqrt(n);        Ans-=(int)sqrt(n/2);        printf("Case %d: %lld\n",++Case,Ans);    }    return 0;}
0 0
原创粉丝点击