您的位置:首页 > 其它

lightoj 1007

2014-08-06 23:26 267 查看
预先处理好phi数组和前缀和,水题。

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN = 5e6+10;
unsigned long long int phi[MAXN];
void init(){
for(int i = 1;i < MAXN;i ++) phi[i] = i;
for(int i = 2;i < MAXN;i += 2) phi[i] /= 2;
for(int i = 3;i < MAXN;i += 2){
if(i == phi[i]){
for(int j = i;j < MAXN;j += i)
phi[j] = (phi[j]*(i-1)/i);
}
}
for(int i = 1;i < MAXN;i ++) phi[i] = phi[i-1] + phi[i]*phi[i];
}
int main(){
init();
int t, a, b, CASE(0);
scanf("%d", &t);
while(t--){
scanf("%d%d", &a, &b);
printf("Case %d: ", ++CASE);
printf("%llu\n",phi[b]-phi[a-1] );
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: