2018/7/31-zznuoj-问题 A: A + B 普拉斯【二维字符串+暴力模拟+考虑瑕疵的题意-0的特例】...
问题 A: A + B 普拉斯
现在我们用01来构成这些数字
输入
输出
样例输入
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的特例】...相关推荐
- 2018/7/31 -zznu-oj -问题 C: 磨刀- 【扩展欧几里得算法的基本应用】
问题 C: 磨刀 时间限制: 1 Sec 内存限制: 128 MB 提交: 190 解决: 39 [提交] [状态] [讨论版] [命题人:admin] 题目描述 磨刀是一个讲究的工作,只能在n℃ ...
- 训练日志 2018.10.31
上周把图的连通性看完了,也做了些有关的题. 图的遍历内容的欧拉回路 Fleury 算法还不太熟练,哈密尔顿回路还没开始,这周争取把图的遍历以及拓扑排序看完,再做些题. 2018.10.31
- 暑期训练日志----2018.7.31
训练第二天. 早上主持开会,讨论了半个多小时,发现很多人达到了传说的境界--会用就行,在我讲线性同余方程求法的时候,很多人认为那就是个模版,通解特解套用就行,但是为什么这么样套,以及定理2是怎么应用的 ...
- 10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第6天 2018/10.31
10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第6天 2018/10.31 1. 第4次周计划概览 2. 今日学习成果 3. 今日时间表 4. 今日反思 5. ...
- 整理形成1997—2018年31个省份人口密度
根据公开数据进行整理,梳理形成1997-2018年31个省份人口密度 人口密度是单位土地面积上的人口数量.通常使用的计量单位有两种:人/平方公里;人/公顷.它是衡量一个国家或地区人口分布状况的重要指标 ...
- DayDayUp:广东卫视2018.12.31—2019财经跨年《遇见2018•预见2019》重点概览【文字+视频】
DayDayUp:广东卫视2018.12.31-2019财经跨年<遇见2018•预见2019>重点概览[文字+视频] 警告:禁止一切形式的粘贴复制!如转载敬请留言告知!感谢尊重知识!尊重版 ...
- 【一周头条盘点】中国软件网(2018.8.27~2018.8.31)
每一个企业级应用的人都置顶了中国软件网 中国软件网为你带来最新鲜的行业干货 趋势洞察 =========== 阿里云肖力:阿里云安全三大"核驱动: 可信.智能.合规 根据Gartner的一项 ...
- 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 ...
- Java黑皮书课后题第8章:*8.31(几何:交点)编写一个方法,返回两条直线的交点。四个点存放在4*2的二维数组points中。编写一个程序,提示用户输入4个点,并显示交点
*8.31(几何:交点)编写一个方法,返回两条直线的交点.四个点存放在4*2的二维数组points中.编写一个程序,提示用户输入4个点,并显示交点 题目 题目描述 破题 代码 本题运行实例 题目 题目 ...
- (31)FPGA米勒型状态机设计(二段式)(第7天)
(31)FPGA米勒型状态机设计(二段式)(第7天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA米勒型状态机设计(二段式)(第7天) 5)技术交流 6 ...
最新文章
- 神经网络AI加速器技术
- Redis介绍 Java客户端操作Redis
- [Z]从铁道部12306.cn网站漫谈电子商务网站的“海量事务高速处理”系统
- MySQL事务autocommit自动提交
- 揭秘!2020年4月全国程序员工资统计,新出炉!(包含地区和语言排行)
- python爬虫多进程_Python爬虫技术--基础篇--多进程
- yum 安装 sun java,CentOS yum安装sun Java jre jdk和openjdk
- javscript之数组(一)
- python删除文件夹中的jpg_python删除文件夹下相同文件和无法打开的图片
- FLASH+XML:构建简单易更新网站
- Dubbo服务治理(一):限流策略
- 插值算法的Python实现方式
- 微信小程序python选择题_微信小程序头脑风暴2答题辅助
- python使用opencv实现人脸检测
- 钉钉ppt放映显示备注_PPT的备注怎么用,放映PPT时如何显示备注 来看看吧
- 集群策略--集群(clustering)
- 车载以太网解决方案,你了解多少?
- 新年新气象 每天一个好心情
- 恶意软件横行无忌 DNS“功”不可没
- 代付系统/代付系统源码/支付宝代付系统/API代付系统