題目大意:輸入整數n,求至少兩個正整數,使得他們的最小公倍數為n,且這些整數的和最小,輸出最小的和。
題意分析:求至少兩個正整數,使得他們的最小公倍數為n,我們使用到唯一分解定律。n=p1^t1+p2^t2+..pr^tr
我們可以發現當因子個數最多時,這些因子相加和最小(比如:12=3*4 12>3+4)
所以我們只需分解n,把這些素數相加就可以
1 #include2 #include3 #include4view codeusing
namespace
std;
5long
long solve(intn)6
21 ans+=temp;22}
23}24if(n>1)//
有大於sqrt(n)的素數因子
25 ans+=n,t++;
26if(t==1)//
t表示素數因子的個數 ,題中要求至少2個數
27 ans+=1;28
return
ans;29}
30int
main()
31
44//
fclose(stdin);
45//
fclose(stdout);
46 }
注意事項:
1.注意n=1,答案是2,想這種邊界都需要測試一下
2.區別兩者的區別,乙個是起到乘的作用,乙個是加(不符合題目要求,可拿8模擬)
1if(n%i==0)2
9 ans+=temp;
10 }
1view codeif(n%i==0)2
9 }
#include#includeac**#include
using
namespace
std;
long
long solve(int
n) ans+=temp;}}
if(n>1||t==0)//
有大於sqrt(n)的素數因子
ans+=n,t++;
if(t==1)//
t表示素數因子的個數 ,題中要求至少2個數
ans+=1
;
return
ans;
}int
main()
//fclose(stdin);
//fclose(stdout);
}
uva 1635 唯一分解定理
include using namespace std const int maxn 1e5 10 bool prim maxn vector fta vectorprimes,ans int n,m,kase,irrelevant maxn void init void prime factors...
uva 10375 唯一分解定理
已知c m,n m n m n 輸入整數p,q,r,s p q,r s,p,q,r,s 10000 計算c p,q c r,s 輸出保證不超過10 8,保留5位小數 根據唯一分解定理,n 可以分解為若干個質數相乘。模擬分解這個式子 include using namespace std define...
UVa10375(唯一分解定理)
例題10 3 選擇與除法 choose and divide,uva10375 已知c m,n m n m n 輸入整數p,q,r,s p q,r s,p,q,r,s 10000 計 算c p,q c r,s 輸出保證不超過108,保留5位小數。分析 本題正是唯一分解定理的用武之地。組合數c m,n...