# C++ 对于大于int限制的运算

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/21692.html | 发布：2023-06-30 | 更新：2023-06-30 | 分类：建站教程

题目：

 

输入两`个 大整数a``b`，计算`a - b`的结果，其中数据保证`0 < b < a < 10^500`。

 

输入描述：

 

一行，两个大整数`a``b`，中间用空格隔开。

  

输出描述：

 

一行一个整数，表示`a-b`的结果。

 

#include <bits/stdc++.h>  
   
using namespace std;  
   
int a[1000010], b[1000010], c[1000010], lena, lenb, lenc, i;  
char n[100010], n1[100010], n2[100010];  
   
int main(){  
 scanf("%s", n1);  
 scanf("%s", n2);  
 if (strlen(n1) < strlen(n2) || (strlen(n1) == strlen(n2) && strcmp(n1, n2) < 0)) {  
 strcpy(n, n1);  
 strcpy(n1, n2);  
 strcpy(n2, n);  
 cout << "-";  
 }  
 lena = strlen(n1); lenb = strlen(n2);  
 for(i = 0; i <= lena - 1; i++) a[lena - i] = int(n1[i] - '0');  
 for(i = 0; i <= lenb - 1; i++) b[lenb - i] = int(n2[i] - '0');  
 i = 1;  
 while (i <= lena || i <= lenb) {  
 if (a[i] < b[i]) {  
 a[i] += 10;  
 a[i+1]--;  
 }  
 c[i] = a[i] - b[i];  
 i++;  
 }  
 lenc = i;  
 while ((c[lenc] == 0) && (lenc > 1)) lenc--;  
 for (i = lenc; i >= 1; i--) cout << c[i];  
 cout << endl;  
 return 0;  
}

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
