高精度除法(高精度除以高精度)

先贴一个简单的高精度除以单精度的:

#include 
#include 
#include 
using namespace std;
int main()
{
	char a[510];
	int c[510]; 
	int b,l;
	while (~scanf("%s%d",&a,&b))
	{
		memset(c,0,sizeof(c)); 
		l=strlen(a);
		int ys=0;
		int t=0,i;
		for (i=0;i=b)
			{
				c[t]=(a[i]-'0'+10*ys)/b;
				ys=(a[i]-'0'+10*ys)%b;
				t++;
			}
			else ys=ys*10+a[i]-'0';
		}
		while (c[i]==0) i--;
		for (int j=i;j>=0;j--)
			printf("%d",c[j]);
		if (ys) printf(" %d",ys);
			printf("\n");
	}
	return 0;
}


 

然后就是高精度除以高精度了,原理利用高精度减法求商吧...很蛋疼的是各种数据OK,就是AC不了,不知道为什么,哪位指出错误,感谢...

#include 
#include 
#include 
#include 
using namespace std;
char c[510];
int ff(char a[510],char b[510])
{
	int cc[510];
	int la,lb,k; 
	memset(cc,0,sizeof(cc));
	la=strlen(a)-1;
	lb=strlen(b)-1;
	k=la+1;
	int t=0;
	while (k--)
	{
		if (lb>=0)
		cc[t]=(a[la--]-b[lb--]);
		else 
		cc[t]=a[la--]-'0';
		if (cc[t]<0)
		{
			a[la]--;
			cc[t]+=10;
		}
		t++;
	}
	while (cc[t]==0) t--;
	int ff=t;
	memset(c,0,sizeof(c));
	for (int j=t;j>=0;j--)
	c[ff-j]=cc[j]+'0';
	c[ff+1]='\0';
	return ff+1;
}
int main()
{
	char a[510],b[510],f[510];
	while (cin>>a>>b)
	{
		int num=0,T=0;
		int la=strlen(a);
		int lb=strlen(b);
		if (lastrlen(b) ||(strlen(c)==strlen(b) && strcmp(c,b)>=0) || i==la+1)
						break;
					f[T++]='0';
				}
			}
			f[T++]='\0';
			cout<


 

你可能感兴趣的:(基础)