int gcd(int a, int b){ // 一般要求a>=0, b>0。若a=b=0,代码也正确,返回0
return b? gcd(b, a%b):a;
}
int lcm(int a, int b){
return a / gcd(a, b) * b;
}
#include<bits/stdc++.h>
using namespace std;
int gcd(int a, int b){return b? gcd(b, a%b):a;}
int main(){
int T , a , b;
cin >> T;
while(T --){
cin >> a >> b;
cout << gcd(a,b) << '\n';
}
return 0;
}
import java.util.Scanner;
public class Main{
public static int gcd(int a, int b) {
if(b == 0) return a;
else return gcd(b, a%b);
}
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
int T = in.nextInt();
while(T -- > 0){
int a = in.nextInt();
int b = in.nextInt();
System.out.println(gcd(a, b));
}
}
}
def gcd(a,b):
if b==0:return a
else:return gcd(b,a%b)
T = int(input())
for i in range(T):
a,b = map(int, input().split())
print(gcd(a,b))
#include<bits/stdc++.h>
using namespace std;
int a[100000];
int main(){
int n; cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
int d=0;
for(int i=1;i<n;i++)
d = __gcd(d,a[i]-a[i-1]); //用STL的gcd函数
if(d==0) cout<<n<<endl;
else
printf("%d\n",(a[n - 1] - a[0]) / d + 1);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int gcd(int a, int b){ return b? gcd(b, a%b):a;}
int lcm(int a, int b){ return a / gcd(a, b) * b;}
int main(){
int a,b,c;
cin>>a>>b>>c;
int t1 = lcm(a,b);
int t2 = lcm(a,c);
int ans = lcm(t1,t2);
cout<<ans<<endl;
return 0;
}
def gcd(a,b):
if b==0:return a
else:return gcd(b,a%b)
fib = [0 for i in range(2030)]
fib[1] = 1
fib[2] = 1
for i in range (3,2030):
fib[i]= fib[i-1] + fib[i-2]
ans = gcd(fib[2020],fib[520])
print(ans)
from itertools import *
def gcd(a,b):
if b==0:return a
else:return gcd(b,a%b)
def lcm(a, b):
return a // gcd(a, b) * b
n = int(input())
s = [n,n-1,n-2,n-3,n-4,n-5,n-6] #7个数
ans=0
for e in permutations(s, 3): #选3个
x = lcm(e[0],e[1])
y = lcm(x,e[2])
if y > ans: ans = y
print(ans)
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n; cin>>n;
if(n%2==1) cout<<n*(n-1)*(n-2);
else if(n%3!=0) cout<<n*(n-1)*(n-3);
else cout<<(n-1)*(n-2)*(n-3);
return 0;
}
#include<bits/stdc++.h> using namespace std; #define N 100000 int n; int v[11]; //保存物品的体积 int c[N]; //保存物品能组成的所有体积 int gcd(int a,int b){ return b?gcd(b,a%b):a;} int gcdAll() { //求所有数的最大公约数 int tmp = v[0]; for (int i = 1; i < n; i++) tmp = gcd(tmp, v[i]); return tmp; } int main(){ cin >> n; for (int i = 0; i < n; i++) cin >> v[i]; if (gcdAll() == 1){ //所有数的最大公约数为1,有解 c[0] = 1; //背包问题 for (int i = 0; i < n; i++) for (int j = v[i]; j <= N; j++) if (c[j - v[i]] == 1) c[j] = 1; for (int i = N; i >= 0; i--) if (!c[i]) { cout<<i; return 0; } } cout<<"0"; //无限解 return 0; }
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b) { return b?gcd(b,a%b):a;}
int lcm(int a, int b){ return a / gcd(a, b) * b;}
int main() {
int T; int ans;
scanf("%d",&T);
while(T--) {
int a0,a1,b0,b1;
cin >>a0>>a1>>b0>>b1;
ans=0;
for(int x=1;x*x <= b1;x++){
if(b1%x == 0){ //优化
if(gcd(x,a0)==a1 && lcm(x,b0)==b1) ans++;
int y = b1/x; //另外一个因子
if(x==y) continue;
if(gcd(y,a0)==a1 && lcm(y,b0)==b1) ans++;
}
}
cout << ans <<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 105;
LL x[N],a[N],b[N];
LL gcd(LL a,LL b){ return b?gcd(b,a%b):a;}
LL gcd_sub(LL a,LL b){
if(a<b) swap(a,b);
if(b==1) return a;
return gcd_sub(b,a/b);
}
int main(){
int n;
while(cin>>n){
LL cnt=0;
for(int i=0;i<n;i++) cin>>x[i];
sort(x,x+n); //排序
for(int i=1;i<n;i++){
// if(x[i]==x[i-1])continue; //去掉重复的X,本题不需要
LL d = gcd(x[i],x[0]);
a[cnt] = x[i]/d;
b[cnt] = x[0]/d; //约分,得分子a / 分母b
cnt++;
}
LL up = a[0], down = b[0];
for(int i=1;i<cnt;i++){
up= gcd_sub(up,a[i]); //求分子
down = gcd_sub(down,b[i]); //求分母
}
cout<<up<<'/'<<down<<endl;
}
return 0;
}
def gcd(a,b):
if b==0:return a
else:return gcd(b,a%b)
def gcd_sub(a,b):
if a<b: a,b = b,a
if b==1: return a
return gcd_sub(b,a//b);
n = int(input())
x = list(set(map(int,input().split()))) #set有去重的作用
x.sort()
n = len(x)
a=[]
b=[]
for i in range(1,n):
d = gcd(x[i],x[0])
a.append(x[i]//d)
b.append(x[0]//d)
n = len(a)
up = a[0]
down = b[0]
for i in range(1,n):
up = gcd_sub(up,a[i])
down = gcd_sub(down,b[i])
print('%d/%d'%(up,down))
import java.util.*;
public class Main {
static int N = 105;
static long[] x = new long[N], a = new long[N], b = new long[N];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
for (int i = 0; i < n; ++i)
x[i] = sc.nextLong();
Arrays.sort(x, 0, n);
int cnt = 0;
for (int i = 1; i < n; ++i) {
if (x[i] == x[i - 1]) continue;
long d = gcd(x[0], x[i]);
a[cnt] = x[i] / d;
b[cnt] = x[0] / d;
cnt++;
}
long up = a[0], down = b[0];
for (int i = 1; i < cnt; ++i) {
up = gcd_sub(up, a[i]);
down = gcd_sub(down, b[i]);
}
System.out.println(up + "/" + down);
}
}
private static long gcd(long a, long b) {
if (a == 0 || b == 0) return 0;
return a % b == 0 ? b : gcd(b, a % b);
}
public static long gcd_sub(long a, long b) {
if (a == b) return a;
return a > b ? gcd_sub(b, a / b) : gcd_sub(b, a);
}
}