LightOJ 1007 Mathematically Hard

来源:互联网 发布:重置sql密码用户名 编辑:程序博客网 时间:2024/05/16 10:11

题意:求a~b的欧拉函数值的平方和

先预处理出1~5e6的欧拉函数值,再预处理出前缀平方和就OK

要注意空间限制,一不小心就炸空间

要注意数据范围,会爆long long

#include <bits/stdc++.h>const int MAXN = 5e6 + 5;unsigned long long phi[MAXN];bool get_phi(){    phi[0] = phi[1] = 0;    for(int i = 2; i < MAXN; i++)        phi[i] = i;    for(int i = 2; i < MAXN; i++)        if(phi[i] == i)            for(int j = i; j < MAXN; j += i)                phi[j] = phi[j] / i * (i - 1);}int main(){    get_phi();    for(int i = 2; i < MAXN; i++)        phi[i] = phi[i - 1] + phi[i] * phi[i];    int T;    scanf("%d", &T);    for(int ca = 1; ca <= T; ca++)    {        int a, b;        scanf("%d%d", &a, &b);        printf("Case %d: %llu\n", ca, phi[b] - phi[a - 1]);    }    return 0;}


0 0
原创粉丝点击