A+B问题(东方化改题+高精度题解)
描述
在大部分的在线题库中,都会将A+B问题作为第一题,以帮助新手熟悉平台的使用方法,同时帮助神犇装B。
A+B问题的题目描述如下:
有一天,⑨正在学习加法,给定两个整数A和B,求出A+B的值。保证A、B及结果均在整型范围内。⑨不会,
于是她找到你,想请你写一个代码帮她解决这个问题。
输入
一行,包含两个整数A,B,中间用单个空格隔开。A和B均在整型范围内。
输出
一个整数,即A+B的值。保证结果在整型范围内。
参考题解
详见洛谷“A+B问题”题解,链接:https://www.luogu.org/problemnew/solution/P1001
本人不才,在这里贴上自己写的高精度加法,希望大家不要嫌弃。
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 char a1[240],b1[240]; 5 int a[240],b[240]; 6 int gaojia() 7 { 8 gets(a1); 9 gets(b1); 10 int i,l1,l2; 11 l1 = strlen(a1); 12 l2 = strlen(b1); 13 for(i = 0;i < l1;i++){ 14 a[i] = a1[l1 - i - 1] - '0'; 15 } 16 for(i = 0;i < l2;i++){ 17 b[i] = b1[l2 - i - 1] - '0'; 18 } 19 int l; 20 if(l1 >= l2) l = l1; 21 else l = l2; 22 for(i = 0;i < l;i++){ 23 a[i] += b[i]; 24 if(a[i] >= 10){ 25 a[i] = a[i] % 10; 26 a[i + 1]++; 27 } 28 } 29 if(a[l]) l++; 30 return l; 31 } 32 int main() 33 { 34 int i,l,k; 35 l = gaojia(); 36 bool ling = false; 37 for(i = l - 1;i >= 0;i--){ 38 if(a[i] != 0){ 39 k = i + 1; 40 ling = true; 41 break; 42 } 43 } 44 if(ling){ 45 for(i = k - 1;i >= 0;i--){ 46 printf("%d",a[i]); 47 } 48 } 49 else printf("0"); 50 return 0; 51 }
第一个(其实是第二个)东方化改题,嗯