最后大数乘法

4 篇文章 0 订阅

#include<stdio.h>
#include<string.h>
int main()
{
char ra[1000];
int a[1000],b[1000],t[1000],t1,t2,i,j,k,ggg,gggg,god,god2=0;
scanf("%s",&ra);
t1=strlen(ra);
for(i=0;i<t1;i++)
a[i]=(int)ra[i]-48; //give me a
scanf("%s",&ra);
t2=strlen(ra);
for(i=0;i<t2;i++)
b[i]=(int)ra[i]-48; //give me b
t[0]=0;
for(;t2>0;t2--) //stop b change a
{
god2++; //oh my god
god=god2;
for(j=t1;j>0;j--) //a change
{
ggg=b[t2-1]*a[j-1];
if(ggg>=10)
{
if(t[god]<0)
t[god]=gggg=ggg/10; //up
else
t[god]+=gggg=ggg/10;
if(t[god-1]<0)
t[god-1]=ggg-gggg*10; //down--
else
t[god-1]+=ggg-gggg*10;
}
else if(t[god-1]<0) //stay
t[god-1]=ggg;
else
t[god-1]+=ggg;
god++;
}
}
k=0;
do //clear
{
if(t[k]>=10)
{
if(t[k+1]<0)
t[k+1]=ggg=t[k]/10;
else
t[k+1]+=ggg=t[k]/10;
t[k]-=ggg*10;
}
k++;
}
while(t[k]>=0); //out
for(k--;k>=0;k--)
printf("%d",t[k]);
return 0;
}

//核心
//#######################
for(i=0;i<q;i++)
{
for(j=0;j<p;j++){k[j+i]=k[j+i]+(a[j]*b[i]);}
for(o=0;o<=(p+q);o++)
{
if(k[o]>9){k[o+1]=k[o+1]+((k[o]-(k[o]%10))/10);k[o]=k[o]%10;}
}
o=0;
//########################
先把字串顛倒...

相成...然後把他取10的餘數..其餘往下一個陣列加!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值