问题 A: A + B 普拉斯

在计算机中,数字是通过像01像素矩阵来显示的,最终的显示效果如下: 
 
现在我们用01来构成这些数字

当宝儿姐输入A + B 时(log10(A)<50,log10(B)<50,且A,B均为正整数),你来计算A+B的和C,并按格式在屏幕上打印C。

输入

每组输入包括两个非负整数 A,B(log10(A)<50,log10(B)<50),已EOF结束输入 

输出

按格式在屏幕中打印C,数字之间相隔三列0。 

样例输入

3 8

样例输出

0010000000100
0110000001100
0010000000100
0010000000100
0010000000100
0010000000100
0111000001110

解析思路:

1、首先按照大数相加,把结果求出来!方法:开两个数组暴力模拟!

2、坑点:最后需要把大数的结果按照正常的顺序输出,并且是转化成01字符串!

3、01串事先存在一个二维字符串中,第一维表示0--9以及空格(三列零),第二维表示每个代表的数字(0--9以及空格)的横坐标,得到具体的横坐标后就一层一层地输出即可!把二维字符串想象成蛋糕,输出时就像横着切蛋糕一样,一层一层地去切!

4、题意,有点瑕疵!还有零的情况吧!比如零加零的情况!


题解:

  1 #include<iostream>
  2 #include<stdio.h>
  3 #include<string.h>
  4 #include<string>
  5 #include<vector>
  6 #include<algorithm>
  7 #define ll long long
  8 using namespace std;
  9 #define N 100
 10
 11 char s1[100],s2[100];
 12 int sum[100];
 13 vector<int>order;
 14
 15 char num[12][10][10]={
 16      {"01110","10001","10011","10101","11001",
 17 "10001","01110"},
 18     {"00100","01100","00100","00100","00100",
 19 "00100","01110"},
 20 {"01110","10001","00001","00110","01000",
 21                     "10000","11111"},
 22 {"11111","00001","00010","00110","00001",
 23 "10001","01110"},
 24 {"00010","00110","01010","10010","11111",
 25 "00010","00010"},
 26  {"11111","10000","10000","11110","00001",
 27 "00001","11110"},
 28  {"01111","10000","10000","11110","10001",
 29 "10001","01110"},
 30 {"11111","00001","00010","00100","00100",
 31 "00100","00100"},
 32  {"01110","10001","10001","01110","10001",
 33 "10001","01110"},
 34  {"01110","10001","10001","01111","00001",
 35 "00010","11100"},
 36 {"000","000","000","000","000",
 37 "000","000"}};
 38
 39 void paint( )
 40 {
 41     for(int i=0;i<=6;i++){
 42         for(int j=0;j<(int)order.size();j++){
 43             int x=order[j];
 44             printf("%s",num[x][i]);
 45         }
 46         cout<<endl;
 47     }
 48 }
 49
 50
 51 int add(char s1[100],char s2[100]){
 52     int len1=strlen(s1);
 53     int len2=strlen(s2);
 54     int i1=len1-1,i2=len2-1,i3=0;
 55     while(i1>=0&&i2>=0){
 56         sum[i3]+=s1[i1]-'0'+s2[i2]-'0';  //记得这里是加等于!
 57         if(sum[i3]>=10){
 58             sum[i3+1]+=sum[i3]/10;
 59             sum[i3]%=10;
 60         }
 61         i3++,i1--,i2--;
 62     }
 63     while(i1>=0){
 64          sum[i3]+=s1[i1]-'0';
 65         if(sum[i3]>=10){
 66             sum[i3+1]+=sum[i3]/10;
 67             sum[i3]%=10;
 68         }
 69          i3++,i1--;
 70     }
 71     while(i2>=0){
 72          sum[i3]+=s2[i2]-'0';
 73         if(sum[i3]>=10){
 74             sum[i3+1]+=sum[i3]/10;
 75             sum[i3]%=10;
 76         }
 77          i3++,i2--;
 78     }
 79     while(sum[i3]>=10){  //最终的进位情况!!
 80             sum[i3+1]+=sum[i3]/10;
 81             sum[i3]%=10;
 82             i3++;
 83     }
 84
 85     if(sum[i3]>0)
 86         return i3+1;
 87     else
 88         return i3;
 89 }
 90
 91 int main()
 92 {
 93     while(scanf("%s%s",s1,s2)!=EOF){
 94         memset(sum,0,sizeof(sum));
 95         int len3=add(s1,s2);   //计算大数相加
 96
 97        /* for(int i=0;i<len3;i++){
 98             printf("%d",sum[i]);
 99         }
100         cout<<"*****"<<endl;
101 */
102         order.clear();    //生成次序
103         for(int i=len3-1;i>=0;i--){
104             order.push_back(sum[i]);
105             if(i!=0)
106                 order.push_back(10);
107         }
108         paint();
109     }
110
111
112     return 0;
113 }

View Code(用到了vector来存贮结果)

转载于:https://www.cnblogs.com/zhazhaacmer/p/9399424.html

2018/7/31-zznuoj-问题 A: A + B 普拉斯【二维字符串+暴力模拟+考虑瑕疵的题意-0的特例】...相关推荐

  1. 2018/7/31 -zznu-oj -问题 C: 磨刀- 【扩展欧几里得算法的基本应用】

    问题 C: 磨刀 时间限制: 1 Sec  内存限制: 128 MB 提交: 190  解决: 39 [提交] [状态] [讨论版] [命题人:admin] 题目描述 磨刀是一个讲究的工作,只能在n℃ ...

  2. 训练日志 2018.10.31

    上周把图的连通性看完了,也做了些有关的题. 图的遍历内容的欧拉回路 Fleury 算法还不太熟练,哈密尔顿回路还没开始,这周争取把图的遍历以及拓扑排序看完,再做些题. 2018.10.31

  3. 暑期训练日志----2018.7.31

    训练第二天. 早上主持开会,讨论了半个多小时,发现很多人达到了传说的境界--会用就行,在我讲线性同余方程求法的时候,很多人认为那就是个模版,通解特解套用就行,但是为什么这么样套,以及定理2是怎么应用的 ...

  4. 10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第6天 2018/10.31

    10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第6天 2018/10.31 1. 第4次周计划概览 2. 今日学习成果 3. 今日时间表 4. 今日反思 5. ...

  5. 整理形成1997—2018年31个省份人口密度

    根据公开数据进行整理,梳理形成1997-2018年31个省份人口密度 人口密度是单位土地面积上的人口数量.通常使用的计量单位有两种:人/平方公里;人/公顷.它是衡量一个国家或地区人口分布状况的重要指标 ...

  6. DayDayUp:广东卫视2018.12.31—2019财经跨年《遇见2018•预见2019》重点概览【文字+视频】

    DayDayUp:广东卫视2018.12.31-2019财经跨年<遇见2018•预见2019>重点概览[文字+视频] 警告:禁止一切形式的粘贴复制!如转载敬请留言告知!感谢尊重知识!尊重版 ...

  7. 【一周头条盘点】中国软件网(2018.8.27~2018.8.31)

    每一个企业级应用的人都置顶了中国软件网 中国软件网为你带来最新鲜的行业干货 趋势洞察 =========== 阿里云肖力:阿里云安全三大"核驱动: 可信.智能.合规 根据Gartner的一项 ...

  8. 2018 Multi-University Training Contest 4 Problem E. Matrix from Arrays 【打表+二维前缀和】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6336 Problem E. Matrix from Arrays Time Limit: 4000/20 ...

  9. Java黑皮书课后题第8章:*8.31(几何:交点)编写一个方法,返回两条直线的交点。四个点存放在4*2的二维数组points中。编写一个程序,提示用户输入4个点,并显示交点

    *8.31(几何:交点)编写一个方法,返回两条直线的交点.四个点存放在4*2的二维数组points中.编写一个程序,提示用户输入4个点,并显示交点 题目 题目描述 破题 代码 本题运行实例 题目 题目 ...

  10. (31)FPGA米勒型状态机设计(二段式)(第7天)

    (31)FPGA米勒型状态机设计(二段式)(第7天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA米勒型状态机设计(二段式)(第7天) 5)技术交流 6 ...

最新文章

  1. 神经网络AI加速器技术
  2. Redis介绍 Java客户端操作Redis
  3. [Z]从铁道部12306.cn网站漫谈电子商务网站的“海量事务高速处理”系统
  4. MySQL事务autocommit自动提交
  5. 揭秘!2020年4月全国程序员工资统计,新出炉!(包含地区和语言排行)
  6. python爬虫多进程_Python爬虫技术--基础篇--多进程
  7. yum 安装 sun java,CentOS yum安装sun Java jre jdk和openjdk
  8. javscript之数组(一)
  9. python删除文件夹中的jpg_python删除文件夹下相同文件和无法打开的图片
  10. FLASH+XML:构建简单易更新网站
  11. Dubbo服务治理(一):限流策略
  12. 插值算法的Python实现方式
  13. 微信小程序python选择题_微信小程序头脑风暴2答题辅助
  14. python使用opencv实现人脸检测
  15. 钉钉ppt放映显示备注_PPT的备注怎么用,放映PPT时如何显示备注 来看看吧
  16. 集群策略--集群(clustering)
  17. 车载以太网解决方案,你了解多少?
  18. 新年新气象 每天一个好心情
  19. 恶意软件横行无忌 DNS“功”不可没
  20. 代付系统/代付系统源码/支付宝代付系统/API代付系统

热门文章

  1. C++主线程与子线程的关系
  2. 通俗版 TCP/UDP三次握手 四次握手
  3. Tomcat详解(一)——tomcat基础知识
  4. LAMP源码安装原理
  5. KVM命令行使用工具(virsh)详解。
  6. Spring思维导图(AOP篇)
  7. 判断浏览器类型和版本
  8. 如何使用SQL Server游标
  9. 安装IIS服务 找不到staxmem.dll文件的解决方法
  10. 构建路径_深度学习的幸福课堂构建从评价细则中找“路径”——基于深度学习的幸福课堂构建实践研究...