1198_a+b

来源:互联网 发布:北京地铁软件 编辑:程序博客网 时间:2024/06/03 16:38
// 1198_a+b.cpp : 定义控制台应用程序的入口点。//题目1198:a+b//时间限制:1 秒内存限制:32 兆特殊判题:否提交:8598解决:2968//题目描述://实现一个加法器,使其能够输出a+b的值。//输入://输入包括两个数a和b,其中a和b的位数不超过1000位。//输出://可能有多组测试数据,对于每组数据,//输出a+b的值。//样例输入://2 6//10000000000000000000 10000000000000000000000000000000//样例输出://8//10000000000010000000000000000000//来源://2010年华中科技大学计算机研究生机试真题#include "stdafx.h"#include "stdio.h"#include "iostream"#include "string"#include "algorithm"using namespace std;int main(){    string a,b;    char c[1010];    while(cin>>a>>b){        reverse(a.begin(),a.end());        reverse(b.begin(),b.end());        int cn,i,j;        cn = i = 0;        while(i<a.length() && i<b.length()){            c[i] = (a[i]-'0' + b[i]- '0' + cn)%10 + '0';            cn = (a[i]-'0' + b[i] -'0'+ cn)/10;            i++;        }        while(i<a.length()){            c[i] = (a[i]-'0' + cn)%10 + '0';            cn = (a[i]-'0' + cn)/10;            i++;        }        while(i<b.length()){            c[i] = (b[i]-'0' + cn)%10 + '0';            cn = (b[i] -'0'+ cn)/10;            i++;        }        if(cn==1){            c[i] = 1+ '0';            c[i+1] = '\0';            reverse(c,c+i+1);        }        else{            c[i] = '\0';            reverse(c,c+i);        }        cout<<c<<endl;    }    return 0;}/*reverse();*/
0 0
原创粉丝点击