您的位置:首页 > 其它

UVA 10791 - Minimum Sum LCM(坑)

2013-10-22 16:26 369 查看
题目链接

不知道为什么,我用cin,cout就是过不了。。。改成scanf过了。。。

还是我居然理解错题意了,已经不能用看错了。。。至少两个数字,我理解成两个数字了,还写了个爆搜。。。

#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
#define LL long long
#define MOD 1000000007
int prim[1000001];
int o[1000001];
LL que[5001];
int main()
{
int cas = 1,i,j,num = 0,m;
LL n,temp;
for(i = 2;i <= 1000000;i ++)
{
if(!o[i])
{
prim[num++] = i;
for(j = i+i;j <= 1000000;j += i)
o[j] = 1;
}
}
while(scanf("%lld",&n)!=EOF)
{
if(!n) break;
printf("Case %d: ",cas++);
if(n == 1)
{
printf("2\n");
continue;
}
m = 0;
for(i = 0;i < num;i ++)
{
if(n == 1) break;
if(n%prim[i] == 0)
{
temp = 1;
while(n%prim[i] == 0)
{
temp *= prim[i];
n /= prim[i];
}
que[m++] = temp;
}
}
if(n != 1)
que[m++] = n;
LL minz = 0;
if(m == 1)
{
printf("%lld\n",que[0]+1);
continue;
}
for(i = 0;i < m;i ++)
{
minz += que[i];
}
printf("%lld\n",minz);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: