1074. 宇宙无敌加法器(20)
来源:互联网 发布:忾乎天下 编辑:程序博客网 时间:2024/04/29 23:17
水题一道,就是加法进制的实际模拟。
核心的易错点在于如何忽略掉结果前面的无意义的‘0’。
自己之前写的:
int k = 0;while(!ans.empty()){ if(k||ans.top()==0) cout << ans.top(); key=1; ans.pop(); }
看似没有问题,其实也忽略了结果是0的时候。
所以以后做题边界和0永远都要特殊检查。
// 2017/10/14 NCU // PAT-B 1074// scienceZ#include <cstdio>#include <stack>#include <cstring>#include <iostream>using namespace std;char arr1[30];char arr2[30];char arr3[30];stack<int> ans;int main(){ cin >> arr1 >> arr2 >> arr3; int l1, l2, l3; l1 = strlen(arr1)-1;; l2 = strlen(arr2)-1; l3 = strlen(arr3)-1; int j = 0, sum = 0; while(1){ if(l1<0 && !j) break; sum+=j; if(l2!=-1) { sum+=arr2[l2]-'0'; l2--;} if(l3!=-1) { sum+=arr3[l3]-'0'; l3--;} if (l1!=-1 && sum >= arr1[l1]-'0'&& arr1[l1]!='0'){ sum-=arr1[l1]-'0'; ans.push(sum); j = 1; sum = 0; }else if(l1!=-1 && sum >= 10 && arr1[l1]=='0'){ sum-=10; ans.push(sum); j = 1; sum = 0; }else{ ans.push(sum); j = 0; sum = 0; } l1--; } int key = 0; while(ans.size()>1&&ans.top()==0){ ans.pop(); } while(!ans.empty()){ cout << ans.top(); key=1; ans.pop(); } return 0;}
阅读全文
0 0
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器
- 百度语音识别Demo -- 简单应用
- Java类加载器的使用
- SQL Server2016使用Day1
- 利用Eclipse Memory Analyzer检查内存泄漏
- java多线程(一)之多线程基础
- 1074. 宇宙无敌加法器(20)
- MySQL Workbench 已停止工作 错误模块名称: KERNELBASE.dll 异常代码: 0xe0434352 程序无法正常启动:( 0xc000007b)
- ThinkPHP5的命名规范
- RabbitMQ_角色权限
- Android7.0安装apk并兼容之前版本
- 尺规作图及其研究意义
- Redis4集群搭建
- google三大论文之--MapReduce:超大机群上的简单数据处理
- google三大论文这 --Google File System(中文翻译)