HUD 5050 Divided Land

http://acm.hdu.edu.cn/showproblem.php?pid=5050

题目大意:

  给定一个矩形的长和宽,把这个矩形分成若干相等的正方形,没有剩余。求正方形的边长最长是多少。

解题思路:

  这道题是“pick定理”的一个变种(不知道是pick定理,也可以退出结论)。由定理是求矩形的长和宽最大公约数。但是这道题,输入的数是二进制,

输出也是二进制,二进制数的大小为2^1000,所以是大数的算法。java有大数的处理。

 1 import java.math.BigInteger;
 2 import java.util.Scanner;
 3
 4
 5 public class Main {
 6     public static void main(String[] args) {
 7         Scanner cin = new Scanner(System.in);
 8
 9         int t = cin.nextInt();
10         for(int cs = 1; cs <= t; ++cs){
11             BigInteger a = cin.nextBigInteger(2);
12             BigInteger b = cin.nextBigInteger(2);
13             System.out.println("Case #"+cs+": "+a.gcd(b).toString(2));
14         }
15
16         cin.close();
17     }
18 }
时间: 2024-10-16 17:53:27

HUD 5050 Divided Land的相关文章

HDU 5050 Divided Land(进制转换)

题意  给你两个二进制数m,n   求他们的最大公约数  用二进制表示  0<m,n<2^1000 先把二进制转换为十进制  求出最大公约数  再把结果转换为二进制  数比较大要用到大数 import java.util.*; import java.math.*; public class wl6_9 { static BigInteger two = BigInteger.valueOf(2), one = BigInteger.ONE, zero = BigInteger.ZERO; s

HDU 5050 Divided Land(最大公约数Java)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5050 Problem Description It's time to fight the local despots and redistribute the land. There is a rectangular piece of land granted from the government, whose length and width are both in binary form.

HDU 5050 Divided Land ( JAVA )

HDU 5050 - Chinese Girls' Amusement ( JAVA or 高精度 ) 题意不用再解释 做法是求两个二进制数的最大公约数字 然后以二进制输出 import java.io.*; import java.math.BigInteger; import java.util.*; public class Main { static PrintWriter out = new PrintWriter(new BufferedWriter( new OutputStrea

hdu 5050 Divided Land

题目:本质是求两个数的最大公约数,java大数真好用 ^_^. import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { BigInteger TWO = BigInteger.valueOf(2); Scanner t = new Scanner(System.in); int cas = t.nextInt(); for

hdu 5050 Divided Land(JAVA高精度)

import java.util.Scanner; import java.math.BigInteger; public class Main { public static void main(String[] args) { Scanner cin=new Scanner(System.in); int T; T=cin.nextInt(); BigInteger a,b; for(int cas=1;cas<=T;cas++){ a=cin.nextBigInteger(2); b=ci

hdu 5050 Divided Land---2014acm上海赛区网络赛

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5050 Divided Land Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 115    Accepted Submission(s): 57 Problem Description It's time to fight the loc

hdu----(5050)Divided Land(二进制求最大公约数)

Divided Land Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 123    Accepted Submission(s): 64 Problem Description It’s time to fight the local despots and redistribute the land. There is a rect

HDU-5050 Divided Land (二进制求GCD)

题目大意:将两个二进制数的GCD用二进制数表示出来. 题目分析:这道题可以用java中的大数类AC. 代码如下: import java.io*; import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String agrs[]){ Scanner sc=new Scanner(System.in); int T=sc.nextInt(); for(in

hdu5050 Divided Land(二进制最大公约数+java强大的读写功能)

题目链接:点击打开链接 题目描述:给定两串二进制,求其最大公约数,并以二进制的形式输出? 解题思路:java大整数 1.首先题目数据范围非常大,明显要用大整数 2.题目的输入和输出都是二进制,这个可以使用java方便的完成 3.求最大公约数,gcd即可,其实java大整数里面已经有这个函数了直接调用就行 代码 import java.math.BigInteger; import java.util.Scanner; public class Main { private static Scan