题目

两仪剑法是武当派武功的高级功夫,且必须 <math> <semantics> <mrow> <mn> 2 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 2 </annotation> </semantics> </math>2 个人配合使用威力才大。同时该剑法招数变化太快、太多。设武当弟子甲招数变化周期为 <math> <semantics> <mrow> <mi> n </mi> </mrow> <annotation encoding="application&#47;x&#45;tex"> n </annotation> </semantics> </math>n,武当弟子乙招数变化周期为 <math> <semantics> <mrow> <mi> m </mi> </mrow> <annotation encoding="application&#47;x&#45;tex"> m </annotation> </semantics> </math>m,两弟子同时使用该剑法,当 <math> <semantics> <mrow> <mn> 2 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 2 </annotation> </semantics> </math>2 人恰好同时达到招数变化周期结束时,威力最大,此时能将邪教妖人置于死地。

请你计算威力最大时,每人用了多少招?

输入格式

首先输入一个 <math> <semantics> <mrow> <mi> t </mi> <mo> ( </mo> <mi> t </mi> <mo> &lt; </mo> <mn> 100000 </mn> <mo> ) </mo> </mrow> <annotation encoding="application&#47;x&#45;tex"> t(t &lt; 100000) </annotation> </semantics> </math>t(t<100000) 表示测试组数。

接下来 <math> <semantics> <mrow> <mi> t </mi> </mrow> <annotation encoding="application&#47;x&#45;tex"> t </annotation> </semantics> </math>t 组输入,每组输入 <math> <semantics> <mrow> <mn> 2 </mn> </mrow> <annotation encoding="application&#47;x&#45;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&#47;x&#45;tex"> n,m(1 \le n,m \le 1000000000) </annotation> </semantics> </math>n,m(1n,m1000000000)

输出格式

对于每组输出,输出用了多少招数。

样例输入

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;
}

返回目录,查看更多