数学入门题——《算法竞赛入门经典-训练指南》

题目链接: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.

 

posted @ 2015-10-06 23:00  Yvettey  阅读(421)  评论(0编辑  收藏  举报