#算法之路之征服上海交大的oj-高精度加法

来源:互联网 发布:mac笔记本如何收藏网页 编辑:程序博客网 时间:2024/06/06 20:58

算法之路之征服上海交大的oj-高精度加法

  1. 高精度加法
    Description

输入2个整数a和b,输出a+b。
Input Format

输入有两行,第一行a,第二行b。

0≤a,b≤10100000


Output Format

输出只有一行,a+b。
Sample Input

1234
1111111111

Sample Output

1111112345

#include<iostream>#include<string.h>using namespace std;char a[100000];char b[100000];char c[100000];//num是用于存储进位的数字int lena,lenb,len,num,flag=0; //flag标志是否是最后一个数要进位 int main(){    cin>>a;    cin>>b;    lena = strlen(a);     lenb = strlen(b);    len = lena>lenb?lena:lenb;    char ch;    for(int i=0;i<lena/2;i++){//倒置字符串         ch = a[i];         a[i] = a[lena-1-i];         a[lena-1-i] = ch;    }     for(int i=0;i<lenb/2;i++){//倒置字符串         ch = b[i];         b[i] = b[lenb-1-i];         b[lenb-1-i] = ch;    }     int t=0;    for(int i=0;i<len;i++){        if(i<lena&&i<lenb){            t = a[i]+b[i]-48-48+num;             if(t>=10){                if(i==len-1){                    flag  = 1;//最后一位要进位                 }                 num = t/10;                t = t%10;            } else{                num=0;            }            c[i] = t+48;         }else if(i<lena&&i>=lenb){            t = a[i]-48+num;             if(t>=10){                if(i==len-1){                    flag  = 1;                }                 num = t/10;                t = t%10;            }else{                num=0;            }             c[i] = t+48;          }else if(i>=lena&&i<lenb){            t = b[i]-48+num;             if(t>=10){                if(i==len-1){                    flag  = 1;                }                 num = t/10;                t = t%10;            } else{                num=0;            }            c[i] = t+48;          }    }     if(flag==1){        c[len++] = num+48;     }     for(int i=0;i<len/2;i++){        char ch = c[i];         c[i] = c[len-1-i];         c[len-1-i] = ch;     }     for(int i=0;i<len;i++){        cout<<c[i];     }     return 0;} 
阅读全文
0 0
原创粉丝点击