c++ 普通高精除高精

//codevs3118 高精度练习之除法

//打出了高精除高精,内心有点小激动。

//还记得已开始学的时候非常难打

#include<cstdio>
#include<cstring>
char s1[600],s2[600];
int a1[600],a2[600],a3[600],a4[600],len1,len2,len3,i,j;
int bi(int a3[],int a4[])
{
if(a3[0]<a4[0])
return 0;
if(a3[0]>a4[0])
return 1;
for(int i=a3[0];i>0;i--)
{
if(a3[i]<a4[i])
return 0;
if(a3[i]>a4[i])
return 1;
}
return 1;
}
int jian(int a3[],int a4[])
{
for(int i=1;i<=a3[0];i++)
{
if(a3[i]<a4[i])
{
a3[i]+=10;
a3[i+1]--;
}
a3[i]-=a4[i];
}
for(;a3[a3[0]]==0&&a3[0]>1;a3[0]--);
}
int main()
{
scanf("%s",s1);
scanf("%s",s2);
len1=strlen(s1);
len2=strlen(s2);
for(i=0;i<len1;i++)
a1[len1-i]=s1[i]-'0';
for(i=0;i<len2;i++)
a2[len2-i]=s2[i]-'0';
a1[0]=len1;
a2[0]=len2;
a4[0]=a1[0]-a2[0]+1;
for(i=a4[0];i>0;i--)
{
memset(a3,0,sizeof(a3));
for(j=1;j<=a2[0];j++)
a3[j+i-1]=a2[j];
a3[0]=a2[0]+i-1;
for(;bi(a1,a3);)
{
a4[i]++;
jian(a1,a3);
}
}
for(;a4[a4[0]]==0&&a4[0]>1;a4[0]--);
for(i=a4[0];i>0;i--)
printf("%d",a4[i]);
return 0;
}

转载于:https://www.cnblogs.com/xydddd/p/5060373.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值