您的位置:首页 > 其它

Bi-shoe and Phi-shoe

2016-01-19 15:10 344 查看
题意:给你一些数Phi,对于每一个phi求出数N且N的欧拉函数的值不小于phi,并且是所有的N的和加起来最小。

思路:因为要求和最小,我们是每一个N最小,这样求得的就是最小值。

对与一个数x,要使N的欧拉函数值不小于x,那么最小的N就是大于x的第一个素数(怎么证明的还没想到)。

先把100W以内的所有素数筛出来,然后查找就解决了。

代码:

#include <cstring>
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
bool Is_prime[1011000];
void Get_prime()
{
memset(Is_prime, false, sizeof Is_prime);
for (int i = 2; i <= 1000010; i++)
{
if (Is_prime[i] == false)
{
for (int j = i + i; j <= 1000010; j += i)
{
Is_prime[j] = true;
}
}
}
}
int main()
{
int n;
int cas = 0;
int T;
Get_prime();
scanf("%d", &T);
while (T--)
{
scanf("%d", &n);
long long ans = 0;
for (int i = 1; i <= n; i++)
{
int x;
scanf("%d", &x);
for (int k = x + 1; k <= 1000010; k++)
{
if (Is_prime[k] == false)
{
ans += k;
break;
}
}
}
printf("Case %d: %lld Xukha\n", ++cas, ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: