数学入门题——《算法竞赛入门经典-训练指南》
題目鏈接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=94017#overview
代碼鏈接:https://github.com/YvetteYue/ACM/tree/master/math%E5%85%A5%E9%97%A8
A題:UVA11388?GCD LCM
這道題求得是已知GCD和LCM 求最小的a情況下的a和b
很明顯,最小的a就是GCD
B題:UVA11889?Benefit
LCM(a,b)=c已知a和c求最小的b
解題方法:如果c%a!=0那么沒有b
否則:計算c/a與a的做大公約數,不斷讓a/gcd然后求公約數,
直到gcd=1時說明找到了a和b的gcd使得上等式成立。
C題:UVA10943?How do you add?
題意:數a分成n個數相加,總共可以有幾種算式?
利用組合數學的知識可知:答案為C(a+n-1,n-1);
這道題等價于n個相同的球放入m個不同的盒子中,且盒子可以為空。
因為數據范圍很小,所以直接打表
D題:UAV10780?Again Prime? No Time.
題意:求n!%m^k=0中的最大k值。
很明顯,這道題的思路應該是將m因式分解然后判斷,里面有多少個該質因子。
難點在于如何判斷該質因子在n!中的個數!思路是:n/i+n/i*i+n/(i*i*i)....利用這個不斷判斷出n!里面有多少個是該質因子數。知道n/(i*i*...)=0為止
?注意:易錯點:不要加while(scanf("%d",&n)!=EOF)
?E題:UVA10892?The Super Powers
題意:LCM(a,b)=n,已知n,求(a,b)對數。
解題方法:1.將n因式分解,將所以將n=p1^r1*p2^r2*...*pn^rn形式
2.a和b分別為與上算式類似,只是指數不同,但是ri=max{ai,bi}就是ri就是n的質因子數的冪
3.所以當ai取ri時,bi可以取0~ri-1,共ri種,類似bi取ri時,ri種,同時為ri時,1種,所以一共有ki=2*ri+1種。
4.所以一共的可能為ans=k1*k2*k3*....*kn,但是要去除相同的種類,所以為(ans+1)/2等價為ans/2+1;
F題:UVA11752?The Super Powers
唉。。真心覺得越寫越覺得自己笨,還數學入門題。。。
題意:就是求1~2^64-1中有多少可以至少可以是兩個不同的正整數的冪。
解題方法:真心靠技巧啊!
1.既然a^i=b^i=n,那么最大的冪次一定是合數,即可以拆分成兩個數。
2.因為數據氛圍是1~2^64-1,所以冪次最大為64,因此只需要找到1~64中所有合數。
3.冪是合數但是底不一定是素數,但是一定是素數的乘積。
?注意:要考慮合數的特點,就是相鄰合數只差<=1.
?
轉載于:https://www.cnblogs.com/Yvettey-me/p/4857959.html
總結
以上是生活随笔為你收集整理的数学入门题——《算法竞赛入门经典-训练指南》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode House Rob
- 下一篇: 网页版扫雷