大整数加法

【描述】LJl100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

求两个不超过200位的非负整数的和。LJl100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【输入】LJl100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。LJl100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【输出】LJl100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。LJl100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【样例输入】LJl100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

22222222222222222222
33333333333333333333

【样例输出】LJl100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

5555555555555555555

【参考程序】LJl100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

C语言版本LJl100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

  1. # include <cstdio> 
  2. # include <cstring> 
  3.  
  4. int main() 
  5.     char s1[205], s2[205]; 
  6.     scanf("%s", &s1); 
  7.     scanf("%s", &s2); 
  8.     int len1 = strlen(s1); 
  9.     int len2 = strlen(s2); 
  10.     int n1[205] = { 0 }, n2[205] = { 0 }, ans[205] = { 0 }; 
  11.     for (int i = 0; i < len1; i++) 
  12.     { 
  13.         n1[i] = s1[len1 - i - 1] - '0'
  14.     } 
  15.     for (int i = 0; i < len2; i++) 
  16.     { 
  17.         n2[i] = s2[len2 - i - 1] - '0'
  18.     } 
  19.     int carry = 0;//进位 
  20.     int i = 0; 
  21.     while (i < len1 || i < len2) 
  22.     { 
  23.         int a = n1[i] + n2[i] + carry; 
  24.         carry = a / 10; 
  25.         ans[i] = a % 10; 
  26.         i++; 
  27.     } 
  28.     ans[i] = carry; 
  29.     while (ans[i] == 0 && i > 0) 
  30.     { 
  31.         i--; 
  32.     } 
  33.     for (int j = i; j >= 0; j--) 
  34.     { 
  35.         printf("%d", ans[j]); 
  36.     } 
  37.     return 0; 

LJl100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
C++版本LJl100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 LJl100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

  1. # include<iostream> 
  2. # include<string> 
  3.  
  4. using namespace std; 
  5.  
  6. int main() 
  7.     string s1, s2; 
  8.     cin >> s1 >> s2; 
  9.      
  10.     int len1 = s1.size(); 
  11.     int len2 = s2.size(); 
  12.     int n1[205] = { 0 }, n2[205] = { 0 }, ans[205] = { 0 }; 
  13.  
  14.     for (int i = 0; i < len1; i++) 
  15.     { 
  16.         n1[i] = s1[len1 - i - 1] - '0'
  17.     } 
  18.     for (int i = 0; i < len2; i++) 
  19.     { 
  20.         n2[i] = s2[len2 - i - 1] - '0'
  21.     } 
  22.  
  23.     int carry = 0;//进位 
  24.     int i = 0; 
  25.     while (i < len1 || i < len2) 
  26.     { 
  27.         int a = n1[i] + n2[i] + carry; 
  28.         carry = a / 10; 
  29.         ans[i] = a % 10; 
  30.         i++; 
  31.     } 
  32.     ans[i] = carry; 
  33.  
  34.     while (ans[i] == 0 && i > 0) // i必须大于零,有可能输出的只有一个0 
  35.     { 
  36.         i--; 
  37.     } 
  38.     for (int j = i; j >= 0; j--) 
  39.     { 
  40.         cout << ans[j]; 
  41.     } 
  42.     return 0; 

关 键 词

大整数加法

相关教程

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!

猜你喜欢