开始soj了
第一题1000
与众不同的居然是a-b…………随手写了个高精度
贴代码了
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int la,lb,lc;
int scmp(char x[],char y[])
{
int lx=strlen(x+1);
int ly=strlen(y+1);
if(lx>ly)
return 1;
if(lx<ly)
return -1;
for(int i=1;i<=lx;i++)
{
if(x[i]>y[i])
return 1;
if(x[i]<y[i])
return -1;
}
return 0;
}
void sub(char a[],char b[],char c[])
{
int la=strlen(a+1),lb=strlen(b+1);
for(int i=1;i<=la;i++)
a[i]-='0';
for(int i=1;i<=lb;i++)
b[i]-='0';
for(int i=1;i<=la/2;i++)
swap(a[i],a[la-i+1]);
for(int i=1;i<=lb/2;i++)
swap(b[i],b[lb-i+1]);
int lc=max(la,lb);
for(int i=1;i<=lc;i++)
{
c[i]=c[i]+a[i]-b[i];
if(c[i]<0)
{
c[i]+=10;
c[i+1]--;
}
}
for(;c[lc]==0;lc--);
for(;lc>=1;lc--)
cout<<int(c[lc]);
cout<<endl;
}
int main()
{
freopen("sub.in","r",stdin);
freopen("sub.out","w",stdout);
char a[100001],b[100001],c[100001];
scanf("%s%s",a+1,b+1);
if(scmp(a,b)>0)
{
sub(a,b,c);
}
else if(scmp(a,b)<0)
{
cout<<"-";
sub(b,a,c);
}
else
cout<<"0"<<endl;
}