UVA 10791 唯一分解定律 思維)

2022-06-27 16:18:13 字數 1334 閱讀 4540

題目大意:輸入整數n,求至少兩個正整數,使得他們的最小公倍數為n,且這些整數的和最小,輸出最小的和。

題意分析:求至少兩個正整數,使得他們的最小公倍數為n,我們使用到唯一分解定律。n=p1^t1+p2^t2+..pr^tr

我們可以發現當因子個數最多時,這些因子相加和最小(比如:12=3*4  12>3+4)

所以我們只需分解n,把這些素數相加就可以

1 #include2 #include3 #include4

using

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 }

view code

注意事項:

1.注意n=1,答案是2,想這種邊界都需要測試一下

2.區別兩者的區別,乙個是起到乘的作用,乙個是加(不符合題目要求,可拿8模擬)

1

if(n%i==0)2

9 ans+=temp;

10 }

1

if(n%i==0)2

9 }

view code

#include#include

#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);

}

ac**

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...