在解决这一类问题是,数据量小的话用传统方法还勉强可以,但数据量一大就会tle,所有在解决这一类问题是还是有算法的可依的。
Description
两仪剑法是武当派武功的高级功夫,且必须2个人配合使用威力才大。同时该剑法招数变化太快、太多。设武当弟子甲招数变化周期为M,武当弟子乙招数变化周期为N,两弟子同时使用该剑法,当2人恰好同时达到招数变化周期结束时,威力最大,此时能将邪教妖人置于死地。请你计算威力最大时,每人用了多少招(用t表示)?
Input
输入数据有若干组,每组数据包含量个整数M,N( 1< M < N < 100000 )。
Output
对于每组数据,输出威力最大时出手了多少招(用t表示,1 < t < 1000000000)?
Sample Input
4 6 3 7
Sample Output
12 21
代码:
#include<stdio h=""> long long gcd(long long a,long long b) { if(b==0) return a; else return gcd(b,a%b); } int main() { long long m,n; while(scanf("%lld %lld",&m,&n)!=EOF) { printf("%lld\n",m/gcd(m,n)*n); } }</stdio>原理是最小公倍数=(a+b)/两者的最大公约数。求最大公约数的方法当人是妇孺皆知的辗转相除法喽!像这种问题在理解的同时最好是当作模板记住哟!