zyz1001 @ 2018-10-20 20:30:43
using namespace std; struct sd{ int t[3000],len; }; sd readit( ){ sd x;char st[3000]; memset(x.t,0,sizeof(x.t)); scanf("%s",st); int k=0; x.len=strlen(st); for(int i=x.len-1;i>=0;i--){ x.t[k]=st[i]-48;k++; } return x; } sd add(sd a,sd b){ int k=a.len>b.len?a.len:b.len; for(int i=0;i<k;i++){ a.t[i]=a.t[i]+b.t[i]; a.t[i+1]=a.t[i+1]+a.t[i]/10; a.t[i]=a.t[i]%10; } a.len=1; for(int i=k;i>=1;i--) if(a.t[i]>0){ a.len=i+1;break; } return a; }
sd mult(sd a,sd b){ sd t; t.len=a.len+b.len; for(int i=0;i<a.len;i++) for(int j=0;j<b.len;j++){ t.t[i+j]=a.t[i]*b.t[j]+t.t[i+j]; t.t[i+j+1]=t.t[i+j]/10+t.t[i+j+1]; t.t[i+j]=t.t[i+j]%10; } a.len=1; for(int i=t.len;i>=1;i--) if(t.t[i]>0){ a.len=i+1;break; } for(int i=0;i<a.len+b.len;i++){ a.t[i]=t.t[i]; } return a; }
void outit(sd x){ for (int i=x.len-1;i>=0;i--){ printf("%d",x.t[i]); } }
int main(){ sd a=readit(),b=readit(),c; c=mult(a,b); outit(c); return 0; }
by 钱逸凡 @ 2018-10-20 20:32:58
@王川德少 请调整一下格式
by Ikari_Shinji @ 2018-10-20 20:33:13
希望更丰富的展现?使用Markdown
by TRZ_2007 @ 2018-10-20 20:34:14
a=input()
b=input()
print(int(a)+int(b))
by zyz1001 @ 2018-10-20 20:34:31
#include<cstdio>
#include<cstring>
using namespace std;
struct sd{
int t[3000],len;
};
sd readit( ){
sd x;char st[3000];
memset(x.t,0,sizeof(x.t));
scanf("%s",st);
int k=0;
x.len=strlen(st);
for(int i=x.len-1;i>=0;i--){
x.t[k]=st[i]-48;k++;
}
return x;
}
sd add(sd a,sd b){
int k=a.len>b.len?a.len:b.len;
for(int i=0;i<k;i++){
a.t[i]=a.t[i]+b.t[i];
a.t[i+1]=a.t[i+1]+a.t[i]/10;
a.t[i]=a.t[i]%10;
}
a.len=1;
for(int i=k;i>=1;i--)
if(a.t[i]>0){
a.len=i+1;break;
}
return a;
}
sd mult(sd a,sd b){
sd t;
t.len=a.len+b.len;
for(int i=0;i<a.len;i++)
for(int j=0;j<b.len;j++){
t.t[i+j]=a.t[i]*b.t[j]+t.t[i+j];
t.t[i+j+1]=t.t[i+j]/10+t.t[i+j+1];
t.t[i+j]=t.t[i+j]%10;
}
a.len=1;
for(int i=t.len;i>=1;i--)
if(t.t[i]>0){
a.len=i+1;break;
}
for(int i=0;i<a.len+b.len;i++){
a.t[i]=t.t[i];
}
return a;
}
void outit(sd x){
for (int i=x.len-1;i>=0;i--){
printf("%d",x.t[i]);
}
}
int main(){
sd a=readit(),b=readit(),c;
c=mult(a,b);
outit(c);
return 0;
}
by TRZ_2007 @ 2018-10-20 20:34:31
玄学
by 钱逸凡 @ 2018-10-20 20:36:42
mult为何不直接返回t?
by zyz1001 @ 2018-10-20 20:39:21
@钱逸凡 直接返回t,最后一个过了,但第一个又错了=n=
by 钱逸凡 @ 2018-10-20 20:41:56
#include<cstdio>
#include<cstring>
using namespace std;
struct sd{
int t[3000],len;
};
sd readit( ){
sd x;char st[3000];
memset(x.t,0,sizeof(x.t));
scanf("%s",st);
x.len=strlen(st);
int k=0;
for(int i=x.len-1;i>=0;i--){
x.t[k++]=st[i]-48;
}
return x;
}
sd mult(sd a,sd b){
sd t;
t.len=a.len+b.len;
for(int i=0;i<a.len;i++)
for(int j=0;j<b.len;j++){
t.t[i+j]=a.t[i]*b.t[j]+t.t[i+j];
t.t[i+j+1]=t.t[i+j]/10+t.t[i+j+1];
t.t[i+j]=t.t[i+j]%10;
}
int l=t.len;
while(t.t[l]==0&&l>0)l--;
t.len=l;
return t;
}
void outit(sd x){
for (int i=x.len;i>=0;i--){
printf("%d",x.t[i]);
}
}
int main(){
sd a=readit(),b=readit(),c;
c=mult(a,b);
outit(c);
return 0;
}
帮你改了一下,可以过了。
你之前输出错了
by 钱逸凡 @ 2018-10-20 20:42:33
注意输出要从x.len开始
by zyz1001 @ 2018-10-20 20:50:49
@钱逸凡 谢谢=v=