题目
两仪剑法是武当派武功的高级功夫,且必须 <math> <semantics> <mrow> <mn> 2 </mn> </mrow> <annotation encoding="application/x-tex"> 2 </annotation> </semantics> </math>2 个人配合使用威力才大。同时该剑法招数变化太快、太多。设武当弟子甲招数变化周期为 <math> <semantics> <mrow> <mi> n </mi> </mrow> <annotation encoding="application/x-tex"> n </annotation> </semantics> </math>n,武当弟子乙招数变化周期为 <math> <semantics> <mrow> <mi> m </mi> </mrow> <annotation encoding="application/x-tex"> m </annotation> </semantics> </math>m,两弟子同时使用该剑法,当 <math> <semantics> <mrow> <mn> 2 </mn> </mrow> <annotation encoding="application/x-tex"> 2 </annotation> </semantics> </math>2 人恰好同时达到招数变化周期结束时,威力最大,此时能将邪教妖人置于死地。
请你计算威力最大时,每人用了多少招?
输入格式
首先输入一个 <math> <semantics> <mrow> <mi> t </mi> <mo> ( </mo> <mi> t </mi> <mo> < </mo> <mn> 100000 </mn> <mo> ) </mo> </mrow> <annotation encoding="application/x-tex"> t(t < 100000) </annotation> </semantics> </math>t(t<100000) 表示测试组数。
接下来 <math> <semantics> <mrow> <mi> t </mi> </mrow> <annotation encoding="application/x-tex"> t </annotation> </semantics> </math>t 组输入,每组输入 <math> <semantics> <mrow> <mn> 2 </mn> </mrow> <annotation encoding="application/x-tex"> 2 </annotation> </semantics> </math>2 个数 <math> <semantics> <mrow> <mi> n </mi> <mo separator="true"> , </mo> <mi> m </mi> <mo> ( </mo> <mn> 1 </mn> <mo> ≤ </mo> <mi> n </mi> <mo separator="true"> , </mo> <mi> m </mi> <mo> ≤ </mo> <mn> 1000000000 </mn> <mo> ) </mo> </mrow> <annotation encoding="application/x-tex"> n,m(1 \le n,m \le 1000000000) </annotation> </semantics> </math>n,m(1≤n,m≤1000000000)。
输出格式
对于每组输出,输出用了多少招数。
样例输入
3
2 3
8 9
4 8
样例输出
6
72
8
题解
题目所求是最小公倍数,n m 的最小公倍数又可由 nm最大公因数 求得,最大公因数可以用碾除法
另外需要注意的是变量的范围
#include<iostream>
using namespace std;
// 最大公约数
long long int gcd(long long int a,long long int b){
return (!b)?a:gcd(b,a%b);
}
int main(){
int t;
long long int n,m;
cin>>t;
while(t--){
cin>>n>>m;
cout<<n*m/gcd(n,m)<<endl;
}
return 0;
}