博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二进制求最大公约数&&输出二进制
阅读量:4873 次
发布时间:2019-06-11

本文共 2470 字,大约阅读时间需要 8 分钟。

Divided Land

Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 56    Accepted Submission(s): 27
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. As the mayor, you must segment the land into multiple squares of equal size for the villagers. What are required is there must be no any waste and each single segmented square land has as large area as possible. The width of the segmented square land is also binary.
 
Input
   The first line of the input is T (1 ≤ T ≤ 100), which stands for the number of test cases you need to solve.
   Each case contains two binary number represents the length L and the width W of given land. (0 < L, W ≤ 2
1000)
 
OutputFor each test case, print a line “Case #t: ”(without quotes, t means the index of the test case) at the beginning. Then one number means the largest width of land that can be divided from input data. And it will be show in binary. Do not have any useless number or space.
 
Sample Input
3 10 100 100 110 10010 1100
 
Sample Output
Case #1: 10 Case #2: 10 Case #3: 110
 
Source
 
#include 
#include
#define MAXN 1000struct BigNumber{ int len; int v[MAXN];};bool isSmaller(BigNumber n1,BigNumber n2){ if(n1.len
n2.len) return 0; for(int i=n1.len-1; i>=0; i--) { if(n1.v[i]
n2.v[i]) return 0; } return 0;}BigNumber minus(BigNumber n1,BigNumber n2){ BigNumber ret; int borrow,i,temp; ret=n1; for(borrow=0,i=0; i
=0) { borrow=0; ret.v[i]=temp; } else { borrow=1; ret.v[i]=temp+2; } } for(; i
=0) { borrow=0; ret.v[i]=temp; } else { borrow=1; ret.v[i]=temp+2; } } while(ret.len>=1 && !ret.v[ret.len-1]) ret.len--; return ret;}BigNumber div2(BigNumber n){ BigNumber ret; ret.len=n.len-1; for(int i=0; i
=0; i--) printf("%d",n2.v[i]); else for(i=n1.len-1; i>=0; i--) printf("%d",n1.v[i]); while(b--) printf("0"); printf("\n");}int main(){ int cases,le,i; BigNumber n1,n2; char str1[MAXN],str2[MAXN]; scanf("%d",&cases); int num; for(num=1;num<=cases;num++) { scanf("%s%s",str1,str2); le=strlen(str1); n1.len=le; for(i=0; i

 

转载于:https://www.cnblogs.com/zhangying/p/3997088.html

你可能感兴趣的文章
shell、cmd、dos和脚本语言
查看>>
javafx实现手机版QQ登录界面
查看>>
XML到底是什么
查看>>
35 个 Java 代码性能优化总结
查看>>
mac平台安装配置TomCat
查看>>
组播原理
查看>>
tomcat安装
查看>>
关于互斥锁和条件变量
查看>>
HDU1846(巴什博奕)
查看>>
改变checkbox和radio的默认样式
查看>>
微机原理之 80x86微处理器
查看>>
如何创建基本的高级队列之二:创建接收方代码
查看>>
堆表的在执行Select语句时的默认排序问题——发现问题
查看>>
oracle监听理解 命名理解
查看>>
Python3基础1
查看>>
C#高性能二进制序列化
查看>>
JS常用函数
查看>>
Python学习教程:Python3除法之真除法、截断除法和下取整对比
查看>>
CSS杂集(标准流&多行垂直居中)
查看>>
Javascript中数组与字典(即map)的使用
查看>>