UVA-10791 数学
2017-08-13 20:15
120 查看
UVA-10791
题意:
输入n (1<=n<2^31) 求至少两个正整数使得他们的lcm等于n并且他们的和最小,输出最小和
代码:
题意:
输入n (1<=n<2^31) 求至少两个正整数使得他们的lcm等于n并且他们的和最小,输出最小和
代码:
// a*b=lcm*gcd => a=lcm*gcd/b; a+b=b+lcm*gcd/b 显然gcd越小a+b就越小,即gcd=1,所以几个数 // 互质时他们的和最小。求n的所有的质因子求和。 // 题目要求至少两个数所以要注意n==1和n只有一种质因子的情况。 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; typedef long long ll; ll solve(ll n){ ll nn=n,ans=0; int m=sqrt(n+0.5),cnt=0; for(int i=2;i<=m;i++){ if(n==1) break; if(n%i==0){ cnt++; ll tmp=1; while(n%i==0){ tmp*=i; n/=i; } ans+=tmp; } } if(n>1) ans+=n; if(cnt==1&&n==1) ans++;//只有一种素因子的情况 if(n==nn) ans=n+1;//n是素数的情况 return ans; } int main() { ll n; int cas=0; while(scanf("%lld",&n)==1&&n){ ll ans=solve(n); if(n==1) ans=2; printf("Case %d: %lld\n",++cas,ans); } return 0; }
相关文章推荐
- UVA - 10791 Minimum Sum LCM 数学题 ,质因数分解
- UVA 10791 Minimum Sum LCM(质因数分解+数学分析)
- [UVa 10791]Minimum Sum LCM
- UVa 701 The Archeologists' Dilemma (数学&枚举)
- uva 11889 Benefit(数学)
- UVA 10325 The Lottery (组合数学,容斥原理,二进制枚举)
- UVa 12665 - Joking with Fermat's Last Theorem(数学)
- UVA 10075 Airlines (Floyd + 数学转换)
- UVa 10900 So you want to be a 2n-aire? (概率DP,数学)
- UVA 113 - Power of Cryptography(数学)
- uva 10623 - Thinking Backward(数学)
- UVa 1583 Digit Generator(数学)
- UVA - 10161 Ant on a Chessboard(数学规律)
- [UVA1639] Candy && 数学期望
- Triangle Counting+uva+数学题
- UVa - 11300 - Spreading the Wealth ( 数学推导 )
- UVA 10790 How Many Points of Intersection? 简单数学题
- UVA - 11827 - Maximum GCD,10200 - Prime Time (数学)
- UVALive 5058 Counting BST 数学
- uva 10790(数学)