大整数减法

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

求两个大的正整数相减的差。kRQ100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

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

共2行,第1行是被减数,第2行是减数。每个大整数不超过200位,不会有多余的前导零。kRQ100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

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

一行,即所求的差。kRQ100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

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

9999999999999999999999999999999999999
9999999999999

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

9999999999999999999999990000000000000

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

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

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

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

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

关 键 词

大整数减法

相关教程

提示声明

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

猜你喜欢