UVA - 10791 Minimum Sum LCM
来源:互联网 发布:天龙八部3d挂机软件 编辑:程序博客网 时间:2024/05/16 13:39
题意:给出一个n,如果几个数的最小公倍数是n的话,那么sum就是这几个数的和,求最小的sum,根据唯一分解定理,一个数可以唯一的分解为n=p1^a1*p2^a2....,确定最小公倍数是由每个素数的次方的最高决定,所以这是唯一确定的,接下来就是怎么凑成数,使得相加最小,因为a*b>a+b,这个不等式的意思是:如果将两个素因子乘在一个是不如分开好的,所以在程序中,我们只要逐一累加最高次数的那个数就行了,还有一个注意的地方:当N=2147483647时,它是一个素数,此时输出2147483648,但是它超过int范围,应考虑用long long。
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;int main(){ int n,t = 1; long long sum; while (scanf("%d",&n) && n){ printf("Case %d: ",t++); int m = sqrt(n)+2; int tmp = n,cnt = 0; sum = 0; for (int i = 2; i <= m; ++i){ if (tmp % i == 0){ ++cnt; int cur = 1; while (tmp % i == 0){ cur *= i; tmp /= i; } sum += cur; } } if (tmp == n) sum = (long long)n + 1; else if (cnt == 1 || tmp != 1) sum += tmp; printf("%lld\n",sum); } return 0;}
- 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
- UVA 10791 - Minimum Sum LCM
- UVa 10791 Minimum Sum LCM
- uva 10791 Minimum Sum LCM
- 理解矩阵、矩阵的现实意义(二)
- FFMPEG 源码分析
- IOS APP开发提交流程证书问题
- 黑马程序员-Android setOnClickListener的实现的三种方法
- iptables
- UVA - 10791 Minimum Sum LCM
- 1_Windows程序运行机制_孙鑫老师VC++教程学习
- (4)事件处理——(8)一个简单的风格切换器(A simple style switcher)
- 堆和栈的区别
- 震撼音乐
- VS2010出现“为帮助内容存储区指定的位置无效或者您无权访问该位置”的解决办法
- 汇编语言——跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP
- 数学之美 语言的思维 中国合伙人
- Data Products(数据产品)