您的位置:首页 > 其它

LightOJ 1370 Bi-shoe and Phi-shoe(欧拉函数)

2017-05-07 08:42 435 查看
http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1370

题意:

给一些数Ai(第 i 个数),Ai这些数代表的是某个数欧拉函数的值,我们要求出数 Ni 的欧拉函数值不小于Ai。而我们要求的就是这些 Ni 这些数字的和sum,而且我们想要sum最小,求出sum最小多少。

思路:
素数P的欧拉函数值为P-1。

所以对于一个给出的数,我们去寻找大于它的第一个素数即可。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue>
#include<cmath>
#include<map>
#include<stack>
using namespace std;

const int maxn=1e6+5;

int n;
int vis[maxn];

void get_primes()
{
int m=sqrt(maxn+0.5);
for(int i=2;i<=m;i++)
{
if(!vis[i])
{
for(int j=i*i;j<=maxn;j+=i)
vis[j]=1;
}
}
}

int main()
{
//freopen("D:\\input.txt","r",stdin);
int T;
int kase=0;
get_primes();
scanf("%d",&T);
while(T--)
{
long long sum=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int x;
scanf("%d",&x);
for(int k=x+1;;k++)
{
if(!vis[k])
{
sum+=k;
break;
}
}
}
printf("Case %d: %lld Xukha\n",++kase,sum);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: