sicily 1201. 01000001

原创 2015年11月18日 19:51:32

1201. 01000001

Constraints

Time Limit: 1 secs, Memory Limit: 32 MB

Description

Adding binary numbers is a very simple task, and very similar to the longhand addition of decimal numbers. As with decimal numbers, you start by adding the bits (digits) one column at a time, from right to left. Unlike decimal addition, there is little to memorize in the way of rules for the addition of binary bits:

   0 + 0 = 0 
   1 + 0 = 1 
   0 + 1 = 1 
   1 + 1 = 10 
   1 + 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

3 
1001101 10010 
1001001 11001 
1000111 1010110

Sample Output

1 1011111 
2 1100010 
3 10011101

题目分析

两个01字符串相加
相加前将两个字符串反转
注意前缀零和结果为零的情况


#include <iostream>
#include <memory.h>

std::string reverse(std::string s) {
  std::string ans = "";
  for (int i = s.length()-1; i >= 0; --i)
    ans += s[i];
  return ans;
}

int main()
{
  int ans[81];
  std::string s1, s2;
  int num;
  std::cin >> num;
  for (int k = 1; k <= num; ++k) {
    std::cin >> s1 >> s2;
    s1 = reverse(s1);
    s2 = reverse(s2);
    memset(ans, 0, sizeof(ans));
    int count = s1.length() > s2.length() ? s1.length() : s2.length();
    for (int i = 0; i < count; ++i) {
      if (i < s1.length())
        ans[i] += s1[i] - '0';
      if (i < s2.length())
        ans[i] += s2[i] - '0';
      if (ans[i] >= 2) {
        ans[i] %= 2;
        ans[i+1]++;
      }
    }
    std::cout << k << " ";
    bool pre = true;
    for (; count >= 0; --count) {
      if (ans[count] == 0) {
        if (!pre)
          std::cout << ans[count];
      } else {
        pre = false;
        std::cout << ans[count];
      }
    }
    if (pre)
      std::cout << "0";
    std::cout << std::endl;
  }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

sicily题目分类

sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...
  • u010858667
  • u010858667
  • 2013年09月05日 11:52
  • 2146

Sicily 1135 飞越原野

广度优先搜索,三维数组判重 #include #include #include using namespace std; struct Node { int x,y,p; }; ch...
  • Detective_Xin
  • Detective_Xin
  • 2013年11月22日 11:19
  • 1316

[sicily]部分题目分类

*************************程序设计题************************* sicily 1293, uva 100, pc 110101, 3n+1数链问题, 难...
  • luohuang0423
  • luohuang0423
  • 2015年09月24日 11:20
  • 777

中山大学Sicily在线测评系统题目分类

Classified Problems on Online Judge 练习题选自以下在线测评系统 * sicily: http://soj.me, 中山大学Sicily在线测评系统 ...
  • cuhkljt
  • cuhkljt
  • 2013年06月26日 21:39
  • 4821

sicily 简单哈希

sicily 1004. 简单哈希 原题: Description  使用链地址法(又称拉链法)可以解决Hash中的冲突问题。其基本思想是:将具有相同哈希地址的记录链成一个单链表,m个哈希地址就...
  • t6_17
  • t6_17
  • 2016年12月14日 21:26
  • 547

Sicily求A-B(也即求A对B的差集)

题目描述思路介绍:①使用vector存储AB ②使用unique与erase对AB分别进行去重 ③开辟一个标记数组,使用二重循环...
  • wyxwyx469410930
  • wyxwyx469410930
  • 2017年12月22日 00:29
  • 56

sicily 1215 脱离地牢

做Sicily 1215脱离地牢 这一题,一直Restrict function,都快崩溃了。 最后发现是内存泄露,就是new出来的东西没有及时delete导致的。 具体是在广度优...
  • chz429
  • chz429
  • 2014年12月27日 10:25
  • 625

sicily 1019(动态规划)

题目链接:sicily 1019 题目分析:恶心的一笔的一道题,不过确实是一道好题。给你一棵树,n个结点,结点间距离为1,每个结点有一个值,第一次走过某个节点获得该结点的值,问用m步遍历树可以获得值...
  • fuyukai
  • fuyukai
  • 2015年04月18日 07:19
  • 393

sicily 1156之约定俗成

这是题目,我就不黏贴了点击打开链接
  • xujqiao
  • xujqiao
  • 2014年07月24日 12:08
  • 295

sicily 1140 国王的遗产

dfs 题意: 给你一颗n个节点的树,操作k次.每次要剪掉一条边产生两棵树,然后删去其中一棵树. 要求删去的树的节点数最大但不超过当前节点数的一半,如果有不止一条边被剪后,使得删去的树一样大...
  • ljhandlwt
  • ljhandlwt
  • 2015年11月10日 19:08
  • 743
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sicily 1201. 01000001
举报原因:
原因补充:

(最多只允许输入30个字)