Minimum Sum LCM UVA
来源:互联网 发布:mysql 事务 编辑:程序博客网 时间:2024/06/10 20:01
Think:
1知识:唯一分解定理++
2题意分析:
1>n == 1的情况和n 是素数的情况
2>n是单质因子的情况
3>当n = 2147483647时是一个素数,结果应该输出2147483648,超过int范围,应该思考用long long 来存储
4>时间复杂度优化问题,如果单纯遍历n,会超时
唯一分解定理(算术基本定理)百度链接
vjudge题目链接
建议参考博客链接
以下为Accepted代码
/*唯一分解定理:一个正整数等于m个质因子(a1, a2, a3, ..., am)的ki次方(k1, k2, k3, ..., km)的乘积;*/#include <cstdio>#include <cstring>#include <cmath>using namespace std;int main(){ int k, n, m, i, cnt; long long sum; k = 1; while(scanf("%d", &n) && n){ printf("Case %d: ", k++); sum = 0, cnt = 0; m = sqrt((double)n); for(i = 2; i <= m; i++){ int v = 1; while(n%i == 0){ v *= i; n /= i; } if(v != 1){ sum += v; cnt++; } ///why not judge i is Prime factor ? :Eratosthenes Sieve method Thought } if(cnt == 0)///n本身作为一个素数||n == 1的情况 sum = (long long)n + 1; else if(n != 1)///余下一个大于sqrt((double)n)的质因子 sum += n; else if(cnt == 1 && n == 1)///单质因子情况 sum += 1; printf("%lld\n", sum); } return 0;}
阅读全文
0 0
- Minimum Sum LCM UVA
- Minimum Sum LCM UVA
- Minimum Sum LCM UVA
- Minimum Sum LCM UVA
- Minimum Sum LCM UVA
- 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
- devops
- Unity让带有Rigidbody组件的游戏对象停止运动
- Python BeautifulSoup库 API
- DynamoDBMapper查询扫描表数据
- (开源工具)SwipeMenuListView滑动菜单的使用
- Minimum Sum LCM UVA
- linux实现磁盘配额设置
- Ronberg算法计算积分
- P2P NAT检测和穿越方式以及两者之间的关系
- 字符串类string类模板
- Java基础
- RedHat5 OpenSSL 升级步骤
- less的认识与初始化
- postgresql去掉字符串空白符以及首尾空格