TOJ 2149.01000001
来源:互联网 发布:php空间搭建goagent 编辑:程序博客网 时间:2024/05/21 10:01
题目链接:http://acm.tju.edu.cn/toj/showp2149.html
Time Limit: 1.0 Seconds Memory Limit: 65536K
Total Runs: 3153 Accepted Runs: 956
0 + 0 = 01 + 0 = 10 + 1 = 11 + 1 = 101 + 1 + 1 = 11
Just as with decimal addition, when the sum in one column is a two-bit (two- digit) number, the least significant figure is written as part of the total sum and the most significant figure is "carried" to the next left column. Consider the following examples:
11 1 <-- Carry bits --> 1 11 1001101 1001001 1000111+ 0010010 + 0011001 + 1010110--------- --------- --------- 1011111 1100010 10011101
The addition problem on the left did not require any bits to be carried, since the sum of bits in each column was either 1 or 0, not 10 or 11. In the other two problems, there definitely were bits to be carried, but the process of addition is still quite simple.
Input
The first line of input contains an integer N, (1 ≤ N ≤ 1000), which is the number of binary addition problems that follow. Each problem appears on a single line containing two binary values separated by a single space character. The maximum length of each binary value is 80 bits (binary digits). Note: The maximum length result could be 81 bits (binary digits).
Output
For each binary addition problem, print the problem number, a space, and the binary result of the addition. Extra leading zeroes must be omitted.
Sample Input
31001101 100101001001 110011000111 1010110
Sample Output
1 10111112 11000103 10011101
Source: Greater New York 2005
水题,二进制加法,上代码;
#include <stdio.h>#include <string.h>using namespace std;int main(){int n;char x[81],y[81];int a[81],b[81],c[82];scanf("%d",&n);int cast=n;while(n--){scanf("%s%s",x,y);int lx=strlen(x);int ly=strlen(y);int len=(lx>ly?lx:ly);int carry=0;memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));for(int i=0;i<lx;i++)a[lx-1-i]=x[i]-'0';for(int i=0;i<ly;i++)b[ly-1-i]=y[i]-'0';for(int i=0;i<len;i++){int tmp=a[i]+b[i]+carry;carry=tmp/2;c[i]=tmp%2;}if(carry==1)c[len++]=1;printf("%d ",cast-n);bool rap=true;for(int i=len-1;i>=0;i--){if(c[i]==0&&rap==true)if(i==0){printf("0");break;}elsecontinue;rap=false;printf("%d",c[i]);}printf("\n");}}
- TOJ 2149.01000001
- TOJ 2976
- toj 3140
- toj 1153
- TOJ 1772
- TOJ 3250
- TOJ 3051
- TOJ 4303
- TOJ 1005
- TOJ 1545
- TOJ 2378
- TOJ 1537
- TOJ 1252
- TOJ 1408
- TOJ 1509
- TOJ 2882
- TOJ 1052
- TOJ-ACM
- C#控制台基础 输入一个数字,输出保留两位小数
- 华为路由器 批量生成NAT映射配置
- 内存溢出(Memory Overflow)和内存泄露(Memory Leak)的区别
- Android实现音频录制的两种方式
- GIT: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED解决方法
- TOJ 2149.01000001
- 瀑布流 RecycleView 的 StaggeredGridLayoutManager?
- html基础学习笔记
- poj2084 Game of Connections
- 刷刷笔试题~~[数组]
- nyoj236DP动规
- linux vim操作小技巧
- 深度优先搜索
- H3C Office 防火墙基本操作