LightOJ

来源:互联网 发布:win10有线网络设置 编辑:程序博客网 时间:2024/05/21 04:24
题目大意:就是给你n个数然后求欧拉函数值大于等于他最小的x总和加起来是多少直接用类似筛选的方法打表然后求解题目数据是1-1e6那么你打表至少要打到1e6+3否则等下会WA这就很僵硬了
题目链接

#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>typedef long long int ll;const ll mx = 1e6+5;ll phi[mx+5] = {0};void get_oula(){for(ll i = 2; i <= mx; i++)if(!phi[i])for(ll j = i; j <= mx; j+=i){if(!phi[j]) phi[j] = j;phi[j] = phi[j]/i*(i-1); }}int main(){get_oula();int t;scanf("%d",&t);for(int casei = 1; casei <= t; casei++){int n;scanf("%d",&n);ll ans = 0,x;for(int i = 1; i <= n; i++){scanf("%lld",&x);for(ll j = x+1; j <= mx; j++)if(phi[j]>=x){ans += j;break;}}printf("Case %d: %lld Xukha\n",casei,ans);}return 0;}


0 0
原创粉丝点击