首页 / C语言 / 大整数除法,C语言基础语法实现
大整数除法,C语言基础语法实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了大整数除法,C语言基础语法实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1349字,纯文字阅读大概需要2分钟。
内容图文
![大整数除法,C语言基础语法实现](/upload/InfoBanner/zyjiaocheng/1065/35253a16b1b342fc93993ccfa5252689.jpg)
#include<stdio.h>
#include<string.h>
#define N 2004
void change(char c[],int n[]);
int Sub(int *a,int *b,int lena,int lenb);
int main()
{
char x[N],y[N];
int a[N]={0},b[N]={0};
scanf("%s %s",x,y);
change(x,a);
change(y,b);
int lena=strlen(x);
int lenb=strlen(y);
int ans[N]={0};
if(lena<lenb)
printf("0\n");
else
{
int s=Sub(a,b,lena,lenb);
if(s<0)
printf("0\n");
else if(s==0)
printf("1\n");
else
{
int i,j;
lena=s;
ans[0]++;
int ntimes=lena-lenb;
for(i=lena;i>=0;i--)
if(i>=ntimes)
b[i]=b[i-ntimes];
else
b[i]=0;
lenb=lena;
for(j=0;j<=ntimes;j++)
{
int buffer;
while(1)
{
buffer=Sub(a,b+j,lena,lenb-j);
if(buffer<0)
break;
ans[ntimes-j]++;
lena=buffer;
}
}
for(i=0;i<=ntimes;i++)
if(ans[i]>9)
{
ans[i+1]+=ans[i]/10;
ans[i]=ans[i]%10;
}
for(i=ntimes;i>=0;i--)
printf("%d",ans[i]);
printf("\n");
}
}
return 0;
}
void change(char c[],int n[])
{
int i,j=0;
for(i=strlen(c)-1;i>=0;i--)
n[j++]=c[i]-‘0‘;
}
int Sub(int *a,int *b,int lena,int lenb)
{
int i,f=0;
if(lena<lenb)
return -1;
else if(lenb==lena)
{
for(i=lena-1;i>=0;i--)
{
if(a[i]<b[i])
return -1;
else if(a[i]>b[i])
break;
}
}
for(i=0;i<lena;i++)
{
a[i]-=b[i];
if(a[i]<0)
{
a[i]+=10;
a[i+1]--;
}
}
for(i=lena-1;i>=0;i--)
{
if(a[i]!=0)
return i+1;
}
return 0;
}
若转载,请注明,谢谢!
原文:http://www.cnblogs.com/xiaok-redback/p/4227570.html
内容总结
以上是互联网集市为您收集整理的大整数除法,C语言基础语法实现全部内容,希望文章能够帮你解决大整数除法,C语言基础语法实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。