steven张 @ 2017-10-21 07:59:27
本地下载数据完全没有问题,为什么交上去就WA?
一个是A+B,一个是A*B都是wa
#include<bits/stdc++.h>
using namespace std;
const int maxlen=10000;
char a[10000],b[10000],c[10000];
int asize,bsize,mnsize,mxsize,mulsize;
int x[maxlen],y[maxlen];
void get()
{
int k=1;
a[1]=getchar();
while(a[k]<='9'&&a[k]>='0')
{
k++;
a[k]=getchar();
}
asize=k-1;
k=1;
b[1]=getchar();
while(b[k]<='9'&&b[k]>='0')
{
k++;
b[k]=getchar();
}
bsize=k-1;
mxsize=max(asize,bsize);
mnsize=min(asize,bsize);
}
void init()
{
for(int i=asize;i>=1;i--)
x[asize-i+1]=a[i]-'0';
for(int i=bsize;i>=1;i--)
y[bsize-i+1]=b[i]-'0';
}
void add()
{
for(int i=1;i<=mxsize;i++)
{
c[i]=x[i]+y[i];
if(c[i]>=10) c[i]-=10,c[i+1]++;
}
}
void mul()
{
if(asize==mnsize)
{
for(int i=1;i<=mnsize;i++)//x
for(int j=1;j<=mxsize;j++)//y
c[j+i-1]+=x[i]*y[j];
}
else if(bsize==mnsize)
{
for(int i=1;i<=mnsize;i++)//y
for(int j=1;j<=mxsize;j++)//x
c[j+i-1]+=y[i]*x[j];
}
mulsize=mnsize+mxsize-1;
for(int i=1;i<=mulsize;i++)
{
if(c[i]>=10)
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
}
if(c[mulsize]>=10)
{
c[mulsize++]-=10;
c[mulsize]=1;
}
}
void printadd()
{
int k=mxsize+1;
while(c[k]==0) k--;
for(int i=k;i>=1;i--)
{
printf("%d",c[i]);
}
}
void printmul()
{
int k=mulsize;
while(c[k]==0&&k!=1) k--;
for(int i=k;i>=1;i--)
printf("%d",c[i]);
}
int main()
{
//freopen("add.in","r",stdin);
get();
init();
mul();
printmul();
}
by 洛谷1号管理员 @ 2017-10-22 16:20:31
我只会写这个。。。。。。
#include<iostream>
using namespace std;
int main()
{
int a,b,s;
cin>>a>>b;
s=a*b;
cout<<s<<endl;
}
结果40分。。。。。。可以改改