1. 程式人生 > >SJTUOJ 1014. 高精度加法

SJTUOJ 1014. 高精度加法

問題內容

Description
輸入2個整數a和b,輸出a+b。

Input Format
輸入有兩行,第一行a,第二行b。

0≤a,b≤101000000≤a,b≤10100000。

Output Format
輸出只有一行,a+b。

Sample Input
1234
1111111111
Sample Output
1111112345

程式碼實現及簡析

陣列模擬豎式計算,型別選用int,long,long long,char都可以,取模不超過型別最大值就行

#include <stdio.h>
#include <string.h>
char a[
100002]; char b[100002]; int main(){ int i = 0; int lena = 0,lenb = 0,lenres,lenadd; char *result, *add=a; char in; while(1) { in = getchar(); if(in == '\n'){ add[i]=0; if(!lena){ lena = i; add = b; result =
a; i = 0; } else{ lenb = i; if(lena < lenb){ result = b; add = a; lenres = lenb; lenadd = lena; } else{ lenres =
lena; lenadd = lenb; } break; } } else{ add[i++] = in; } } lenadd--; while(lenres--){ result[lenres] = (result[lenres]-'0') + (lenadd >= 0 ? add[lenadd] - '0':0); lenadd--; in = result[lenres]/10; result[lenres] = result[lenres]%10 + '0'; if(lenres > 0){ result[lenres - 1] = in + result[lenres - 1]; in = 0; } } if(in){ putchar(in+'0'); } puts(result); return 0; }

時間:109ms 空間:10180kb