您的位置:首页 > 其它

1074. 宇宙无敌加法器(20)

2017-10-02 00:36 387 查看
//几个坑点:1.最后一个判例是输出1个0的情况,注意判断输出0的个数 2.最后有进位的时候,final的位数要加1
//PAT-1-1074#include <iostream>#include <algorithm>#include <string>#include <math.h>#include <sstream>#include <vector>using namespace std;int main(){string decimal;string a,b,res;res="";cin>>decimal>>a>>b;int count=0;int l0=decimal.length(),la=a.length(),lb=b.length();int sum=0,carry=0;//vector<int> res;while (count<min(la,lb)) {count++;int di;if (l0-count>=0) {di = decimal[l0-count]-'0'==0?10:decimal[l0-count]-'0';}else di = 10;sum = (a[la-count]+b[lb-count]-'0'-'0'+carry)%(di);carry=a[la-count]+b[lb-count]-'0'-'0'+carry>=(di)?1:0;char c=sum+'0';res+=c;}while (count<la) {count++;int di;if (l0-count>=0) {di = decimal[l0-count]-'0'==0?10:decimal[l0-count]-'0';}else di = 10;sum = (a[la-count]-'0'+carry)%(di);carry=a[la-count]-'0'+carry>=(di)?1:0;char c=sum+'0';res+=c;}while (count<lb) {count++;int di;if (l0-count>=0) {di = decimal[l0-count]-'0'==0?10:decimal[l0-count]-'0';}else di = 10;sum = (b[lb-count]-'0'+carry)%(di);carry=b[lb-count]-'0'+carry>=(di)?1:0;char c=sum+'0';res+=c;}string final="";int finaldigit=0;if (carry==1) {res+='1';finaldigit =max(la, lb)+1;}else finaldigit = max(la, lb);for (int i=0; i<finaldigit; i++) {final+=res[res.length()-i-1];}int begin=final.length();for (int i=0; i<final.length(); i++) {if (final[i]=='0') {continue;}else {begin = i;break;}}if (begin==final.length()) {cout<<"0";}else {for (int i=begin; i<final.length(); i++) {cout<<final[i];}}return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: