10791 - Minimum Sum LCM
来源:互联网 发布:java定义可变长度数组 编辑:程序博客网 时间:2024/06/11 05:11
唯一分解定律的应用,任何数都能分解成几个质数相乘的形式,那个质数部分说明了这个质数出现的次数。所以用while()循环来求得各个质数。用k来得出每个小部分。注意到有可能这个数会被一个小质数给除尽,例如n=4,则答案要+1=5
#include<bits/stdc++.h>using namespace std;typedef long long LL;const int ans = 100000;int vis[ans+5];vector<int> primes;void add_primes() { int m=sqrt(ans+0.5); memset(vis,0,sizeof(vis)); for(int i=2;i<=m;++i) if(!vis[i]) for(int j=i*i;j<=ans;j+=i) vis[j] = 1; for(int i=2;i<=ans;i++) if(!vis[i]) primes.push_back(i);}void solve(LL n,LL& maxn) { long long bns=n; int k,bbs=0; for(int i=0;primes[i]<sqrt(bns+0.5);++i){ k=1; while(n%primes[i]==0) { n/=primes[i]; k*=primes[i]; } if(k!=1) { maxn+=k; bbs++; } if(n==1) break; } if(n!=1&&n!=bns) maxn+=n; if(n==bns) { maxn=bns+1;return ; } if(bbs==1&&n==1) maxn++;}int main() { int kase=0; add_primes(); LL n; while(scanf("%lld",&n)!=EOF&&n) { LL maxn=0; solve(n,maxn); printf("Case %d: %lld\n",++kase,maxn); } return 0;}
0 0
- 10791 - Minimum Sum LCM
- 10791 - Minimum Sum LCM
- 10791 - Minimum Sum LCM
- uva 10791 - Minimum Sum LCM
- uva 10791 - Minimum Sum LCM
- UVa 10791 - Minimum Sum LCM
- UVA 10791 - Minimum Sum LCM
- UVA 10791 Minimum Sum LCM
- UVa:10791 Minimum Sum LCM
- uva 10791 - Minimum Sum LCM
- UVA - 10791 Minimum Sum LCM
- UVA 10791 - Minimum Sum LCM
- UVA 10791 - Minimum Sum LCM
- UVA 10791 Minimum Sum LCM
- UVa 10791 - Minimum Sum LCM
- Minimum Sum LCM - UVa 10791
- UVa 10791 - Minimum Sum LCM
- UVA - 10791 Minimum Sum LCM
- php之Smarty基本语法和三大变量
- MongoDB 监控备份工具MMS
- Expression Tree 上手指南 (三)
- jQuery用过的插件
- POJ 1228 Grandpa's Estate (稳定凸包)
- 10791 - Minimum Sum LCM
- C++二叉树线索化并遍历的示例代码
- hdu 4347 The Closest M Points(kd树+优先队列)
- sencha touch中点击overlay,会触发底下的输入框获得焦点的处理办法
- 关于错误提示Must explicitly describe intended ownership of an object array parameter
- C语言_分支结构
- acm2025
- iOS与WebService通信,内容包含“尖括号”返回异常
- 真实的面试题总结