个人主页:羽晨同学
个人格言:“成为自己未来的主人~”
记录详情 - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/record/205122671
这个题目的解题思路,其实是和高精度加法是非常像的。怎么说呢,其实开始的时候,由于范围受限的原因,所以我们必须把数字存到字符串中,然后用倒序,存到数组中,然后进行高精度减法,进行高精度减法的时候,我们可以逐个相减,然后如果减下的数字小于0,那么+10,前一位减一,最终从非0的第一位开始输出。
/*高精度减法*/
#include
#include
using namespace std;
const int N = 1e6+10;
int a[N],b[N],c[N];
typedef long long LL;
LL la,lb,lc;
void sub(int a[],int b[],int c[])
{
for(int i=0;i>x>>y;//默认x比y大
if((y.size()>x.size())||(y.size()==x.size()&&y>x))
{
swap(x,y);
cout<<"-";
}
la=x.size();lb=y.size();lc=max(la,lb);
for(int i=x.size()-1;i>=0;i--) a[la-1-i]=x[i]-'0';
for(int i=y.size()-1;i>=0;i--) b[lb-1-i]=y[i]-'0';
sub(a,b,c);
for(int i=lc;i>=0;i--) cout<
好了,今天的内容就到这里,我们明天再见。