作业帮 > 综合 > 作业

大数的乘法给出一些整数对,一个为可能接近100位的大数a,另一个为1位数b,计算a*b的结果.(a,b均非负)大虾们帮我

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/12 08:43:36
大数的乘法
给出一些整数对,一个为可能接近100位的大数a,另一个为1位数b,计算a*b的结果.(a,b均非负)
大虾们帮我看看我的代码为什么总说超时
#include
#include
int main(void)
{
char a[200],b;
while(scanf("%s %c",a,&b)!='\0')
{
int c,d[200],e=0,f,g=0,x,y,lenth;
x=b-48;
lenth=strlen(a);
for(c=lenth-1;c>=0;c--,e++)
{
y=a[c]-48;
if(c!=0)
d[e]=(x*y+g)%10;
else
d[e]=x*y+g;
g=x*y/10;
}
if(x==0)
printf("0\n");
else
{
for(c=e-1;c>=0;c--)
printf("%d",d[c]);
printf("\n");
}
}
return 0;
}
#include
#include
int chenfa(char *a,int n,char b){
char c[101];int i,j,k,t,d;
d=b-'0';j=0;k=0;
for(i=n;i>=0;i--){
t=((*(a+i))-'0')*d+k;
if(t>9){
k=t/10;t=t%10;}
else k=0;
c[j]=t+'0';j=j+1;}
if(k==0) c[j]='\0';
else{
c[j]=k+'0';c[j+1]='\0';n=n+1;}
t=1;
for(i=n;i>=0;i--){
if(t==1&&c[i]=='0'&&i>0) continue;
else{
putchar(c[i]);t=0;}}
printf("\n");
return 0;}
int main(void){
char a[104],b;
int i,n;char *e;
while(gets(a)){
n=strlen(a);
b=a[n-1];
n=n-3;
chenfa(&a[0],n,b);}
return 0;}
这个是我做的,AC了,我QQ号是233095121,有空可以一起交流下
我也是新手
你的我再看下