求二进制的gcd
本来是用
if a偶,b偶
gcd(a, b) = gcd(a/2, b/2);
if a奇,b偶
gcd(a, b) = gcd(a/2, b);
if a奇,b奇
gcd(a, b) = gcd((a-b)/2, b)
但是想想就麻烦,每次还要保证a>b...,还是用java了
import java.util.Scanner;
import java.math.BigInteger;
public class Main {
static int kase;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
kase = in.nextInt();
String L, W;
BigInteger l, w, res;
for(int ks=1; ks<=kase; ks++){
L = in.next();
W = in.next();
l = new BigInteger(L, 2);
w = new BigInteger(W, 2);
res = l.gcd(w);
System.out.println("Case #"+ks+": "+res.toString(2));
}
}
}