数学入门题——《算法竞赛入门经典-训练指南》
题目链接: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.