压 4 位
先定义 struct info{int len,num[1005];};
info operator +(info a,info b)
{info c;int i;
c.len=a.len;
if (b.len>c.len) c.len=b.len;
for (i=1;i<=c.len+1;i++) c.num[i]=0;
for (i=1;i<=c.len;i++) c.num[i]=a.num[i]+b.num[i];
for (i=1;i<=c.len;i++)
{ c.num[i+1]+=c.num[i]/10000;
c.num[i]=c.num[i]%10000;
}
if (c.num[c.len+1]>0) c.len++;
return c;
}
info operator *(info a,int b)
{info c;
int i;
c.len=a.len;
for (i=1;i<=c.len+1;i++) c.num[i]=0;
for (i=1;i<=c.len;i++) c.num[i]=a.num[i]*b;
for (i=1;i<=c.len;i++)
{ c.num[i+1]+=c.num[i]/10000;
c.num[i]=c.num[i]%10000;
}
if (c.num[c.len+1]>0) c.len++;
return c;
}
void print(info ans)
{int i;
printf("%d",ans.num[ans.len]);
for (i=ans.len-1;i>=1;i--)
printf("%.4d",ans.num[i]);
}