加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数除(正整数整除)

发布时间:2020-12-14 02:14:42 所属栏目:大数据 来源:网络整理
导读:大数除(正整数整除) My solution: /*2015.10.31*/ span style="font-size:14px;"#includestdio.h#includestring.hchar c1[100],c2[100];int t1[100],t2[100],result[100];int yuchu(int *a,int *b,int n,int m){int i,j; if(nm)return -1;if(n==m)for(i=n-

大数除(正整数整除)

My solution:

/*2015.10.31*/

<span style="font-size:14px;">#include<stdio.h>
#include<string.h>
char c1[100],c2[100];
int t1[100],t2[100],result[100];
int  yuchu(int *a,int *b,int n,int m)
{
	int i,j; 
	if(n<m)
	return -1;
	if(n==m)
	for(i=n-1;i>=0;i--)
	{
		if(a[i]<b[i])
         return -1;
        if(a[i]>b[i])
        break;
	}
	 for(i=0;i<n;i++)
	 {
	 	a[i]-=b[i];
	 	if(a[i]<0)
	 	{
	 		a[i]+=10;
	 		a[i+1]--;//向高位借1. 
		 }
	 }
	 for(i=n-1;i>=0;i--)//找出最高位不为0的元素下标 
	 if(a[i])
	 return i+1;//i+1表示处理后的t1数组的有效数组元素个数(没有前缀0) 如:001203300,有效元素个数为7 
	 return i+1;
}
void chu(int cha,int t)
{
	int n,n1,m,j;
	n=t;m=t;
	for(j=0;j<=cha;j++)//这里一定要加=号,t2数组从该地址(下标为cha)起到m下标结束,存放的是原始数值即同输入的除数一样 
	{
		/*由于被除数位数不足,通过j,依次减去t2数组后缀0,从而继续调用yuchu()*/ 
		while((n1=yuchu(t1,t2+j,n,m-j))>=0)/*n,(m-j)记录当前处理的t1,t2数组的元素个数,表示除数从第j位开始参与处理*/
		{
			n=n1;
			result[cha-j]++; /*(cha-j)记录的是当前求得的商存放在结果数组(result)中的下标 */ 
		}	               /*每成功减一次,对应的记录商的元素加1*/ 
	}
	j=cha+1;
	while(!result[--j]);/*去除前缀0,如20000/25得到的结果为(cha=3):result[3]=0,result[2]=8,result[1]=0,result[0]=0*/ 
	for(;j>=0;j--)
	printf("%d",result[j]);
	printf("n");	
}
int main()
{
	int  i,j,l1,l2,cha;
	while(scanf("%s%s",c1,c2)==2)
	{
		memset(t1,sizeof(t1));
		memset(t2,sizeof(t2));
		memset(result,sizeof(result));
		l1=strlen(c1);
		l2=strlen(c2);
		if(l1<l2)
		printf("0n");
		else
		{
			for(j=0,i=l1-1;i>=0;i--)
			t1[j++]=c1[i]-'0';
			for(j=0,i=l2-1;i>=0;i--)
			t2[j++]=c2[i]-'0';
			cha=l1-l2;/*最后求得商按位存储在result[cha]......result[0]中*/
			if(cha)
			{
				for(i=l1-1;i>=cha;i--)
				t2[i]=t2[i-cha];
				for(;i>=0;i--)
				t2[i]=0;
			}
			chu(cha,l1);	
		 } 	
	}
	return 0;
}</span>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读