题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5050
3 10 100 100 110 10010 1100
Case #1: 10 Case #2: 10 Case #3: 110
PS:
思路很简单,就是把输入的二进制长和宽转化为十进制求一个GCD然后在转换为二进制输出即可,不过由于数据过大,需要用Java来实现,这里贴一发队友敲的Java;
代码如下:
import java.math.*;
import java.util.Scanner;
public class Main{
public static BigInteger gcd(BigInteger a,BigInteger b)
{
if(b.equals(BigInteger.ZERO))
return a;
return gcd(b,a.mod(b));
}
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int t,i,j;
String s=null;
char str[];
BigInteger a,b;
t=input.nextInt();
for(i=1;i<=t;i++)
{
a=input.nextBigInteger(2);
b=input.nextBigInteger(2);
a=gcd(a,b);
System.out.println("Case #"+i+": "+a.toString(2));
}
}
}HDU 5050 Divided Land(最大公约数Java)
原文:http://blog.csdn.net/u012860063/article/details/39617905