比赛 |
防止浮躁的小练习v0.4 |
评测结果 |
AAAAAA |
题目名称 |
增强的减法问题 |
最终得分 |
100 |
用户昵称 |
_Itachi |
运行时间 |
0.002 s |
代码语言 |
C++ |
内存使用 |
0.30 MiB |
提交时间 |
2016-10-13 19:11:49 |
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<cstring>
int _max(int a,int b){return a>b?a:b;}
struct _Rabit{
#define INF 10
int a[1005];
void init(int x=0){
memset(a,0,sizeof(a));
if(x)while(x)a[++a[0]]=x%INF,x/=INF;
}
bool operator < (const _Rabit &x)const{
if(x.a[0]^a[0])return a[0]<x.a[0];
for(int i=a[0];i;i--)
if(a[i]^x.a[i])return a[i]<x.a[i];
return false;
}
bool operator >= (const _Rabit &x)const{
if(x.a[0]^a[0])return a[0]>=x.a[0];
for(int i=a[0];i;i--)
if(a[i]^x.a[i])return a[i]>=x.a[i];
return true;
}
_Rabit operator + (const _Rabit &x)const{
_Rabit res;res.init();
res.a[0]=_max(x.a[0],a[0]);
for(int i=1;i<=res.a[0];i++)
res.a[i]+=a[i]+x.a[i],res.a[i+1]+=res.a[i]/INF,res.a[i]%=INF;
if(res.a[res.a[0]+1])res.a[0]++;
return res;
}
_Rabit operator - (const _Rabit &x)const{
_Rabit res;res.init();
res.a[0]=_max(x.a[0],a[0]);
for(int i=1;i<=res.a[0];i++)
res.a[i]=a[i]-x.a[i];
for(int i=1;i<=res.a[0];i++)
if(res.a[i]<0)res.a[i+1]--,res.a[i]+=10;
while(!res.a[res.a[0]])res.a[0]--;
return res;
}
void out(){
while(a[0]>0&&!a[a[0]])--a[0];
for(int i=a[0];i>0;i--)printf("%d",a[i]);
if(a[0]<1)putchar('0');putchar('\n');
}
#undef INF
}a,b,c;
int main(){
freopen("sub.in","r",stdin);freopen("sub.out","w",stdout);
char s1[1001],s2[1001];
scanf("%s%s",s1+1,s2+1);
int len1=strlen(s1+1),len2=strlen(s2+1);
for(int i=0;i<len1;i++)a.a[i+1]=s1[len1-i]-48;a.a[0]=len1;
for(int i=0;i<len2;i++)b.a[i+1]=s2[len2-i]-48;b.a[0]=len2;
if(a>=b)c=a-b;else putchar('-'),c=b-a;
c.out();
}