1074. 宇宙无敌加法器(20)
2017-10-15 03:14
302 查看
水题一道,就是加法进制的实际模拟。
核心的易错点在于如何忽略掉结果前面的无意义的‘0’。
自己之前写的:
看似没有问题,其实也忽略了结果是0的时候。
所以以后做题边界和0永远都要特殊检查。
核心的易错点在于如何忽略掉结果前面的无意义的‘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; }
相关文章推荐
- 1074. 宇宙无敌加法器(20)
- PAT乙级1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)(C++)
- 1074. 宇宙无敌加法器(20) (题解与反思)
- PAT 1074 宇宙无敌加法器 (20 分)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- PAT(B) 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 乙级 PAT 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- 1074. 宇宙无敌加法器(20)
- PAT (Basic Level) Practise (中文) 1074. 宇宙无敌加法器(20)