您的位置:首页 > 其它

UVa--10791 Minimum Sum LCM(math)

2016-02-18 21:11 316 查看
UVa 10791

题解

算术基本定理的应用。

将n分解,n=pa11pa22...pakk,可知将每个pakk作为一个因子时最优。

注意当 n = 1和 n 为素数的时候,最小和为 n+1.

#include <bits/stdc++.h>
using namespace std;

int main()
{
#ifdef LOCAL
freopen("data.in", "r", stdin);
#endif // LOCAL
int kcase = 1;
long long n;

while(cin >> n && n)
{
long long ans = 0;
vector<int> fac;
long long nn = n, m = (int)sqrt(n + 0.5);

for(int i = 2; i <= m; ++i)
{
long long  e = 1;
while(n % i == 0 && n > 1)
{
e *= i;
n /= i;
}
if(e != 1) fac.push_back(e);
}
if(n > 1) fac.push_back(n);

if(fac.size() == 1 || nn == 1) ans = nn + 1;
else{
for(size_t i = 0; i < fac.size(); ++i)
ans += fac[i];
}
printf("Case %d: %lld\n", kcase++, ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UVa math easy