高精减

https://www.luogu.com.cn/problem/P2142

#include<bits/stdc++.h>
using namespace std;
char a[100860],b[100860];
int aa[100860],bb[100860],cc[100860];
int main()
{
	cin>>a>>b;
	int lena=strlen(a),lenb=strlen(b),lenc=1;
	if(lenb>lena||(lena==lenb&&strcmp(a,b)<0))//QAQ先比较长度啊 
	{
		cout<<"-";
		for(int i=0;i<lenb;i++) aa[lenb-i]=b[i]-'0';
		for(int i=0;i<lena;i++) bb[lena-i]=a[i]-'0';//QAQ数组就不要swap了呀 
		swap(lena,lenb);//QAQ因为while的循环条件,,,记得放在后面 
	}
	else
	{
		for(int i=0;i<lena;i++) aa[lena-i]=a[i]-'0';
		for(int i=0;i<lenb;i++) bb[lenb-i]=b[i]-'0';
	}
	while(lenc<=lena)
	{
		cc[lenc]=aa[lenc]-bb[lenc];
		if(cc[lenc]<0) 
		{
			cc[lenc]+=10;
			aa[lenc+1]--;
		}
		lenc++;
	}
	while(cc[lenc]==0&&lenc>1) lenc--;
	for(int i=lenc;i>=1;i--) cout<<cc[i];
	return 0;
}```
原文地址:https://www.cnblogs.com/qwq-/p/13545935.html