⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bignumber.h

📁 求pi的程序
💻 H
字号:
int plus(__int64 *a,__int64 *b,int a1)//大数相加,a1代表分段数
{
	int i;
	int t=0;
	for (i=0;i<a1;i++){
		a[i]=a[i]+b[i]+t;
		if (a[i]>=1000000000){
			a[i]-=1000000000;
			t=1;
		}else t=0;
	}
	return t;
}
int multiply(__int64 *a,int b,int a1)
{
	int i;
	int t=0;
	__int64 *c=new __int64[a1];
	for (i=0;i<a1;i++){
		c[i]=a[i]*b+t;
		t=c[i]/1000000000;
		c[i]-=(__int64)t*1000000000;
	}
	for(i=0;i<a1;i++)
		a[i]=c[i];
	delete c;
	return t;
}
int divide(__int64 *a,int b,int a1)
{
	int i;
	int t=0;
	__int64 *c=new __int64[a1];
	for (i=a1-1;i>=0;i--){
		c[i]=(a[i]+__int64(t)*1000000000)/b;
		t=(a[i]-c[i]*b)%1000000000;
		t=(t+1000000000)%1000000000;
	}
	for(i=0;i<a1;i++)
		a[i]=c[i];
	delete c;
	return t;
}
int minus(__int64 *a,__int64 *b,int a1)//大数相减,a1代表分段数
{
	int i;
	int t=0;
	for (i=0;i<a1;i++){
		a[i]=a[i]-b[i]-t;
		if (a[i]<0){
			a[i]+=1000000000;
			t=1;
		}else t=0;
	}
	return t;
}
/*int multiply(long *a,long *b,int a1)//大数相减,a1代表分段数,相乘后的分段数要求小于a1
{
	int i,j;
	int t=0,s=0;
	long *c=new long[a1];
	long *d=new long[a1];
	for (i=0;i<a1;i++)
		d[i]=0;
	for (i=0;i<a1;i++){
		for(j=0;j<a1;j++){
			c[j]=a[j]*b[i]+t;
			t=c[j]/10000;
			c[j]-=t*10000;
			if(i+j<a1){
				d[j+i]=c[j]+d[j+i]+s;
				if(d[j+i]>=10000){
					d[j+i]-=10000;
					s=1;
				}
			}
		}
		if (s>0){delete c,d; return s;}
	}
	for(i=0;i<a1;i++)
		a[i]=d[i];
	delete c;
	delete d;
	return s;
}
int divide(long *a,long *b,int a1)//大数相除,a1代表分段数,被除数的分段数要求小于a1
{
	int i,j,p;
	long *c=new long[a1];
	for (i=0;i<a1;i++)
		c[i]=0;
	long *d=new long[a1];
	for (i=0;i<a1;i++)
		d[i]=0;
	for (j=a1-1;j>=0;j--){
		while (p=minus(d,a,a1)==1){
			if (c[j]==9999) break;
			c[j]++;
			for (i=0;i<a1;i++)
				d[i]=b[i];
			multiply(d,c,a1);
		}
		if(p==0)c[j]--;
		minus(d,d,a1);
	}
	for(i=0;i<a1;i++)
		a[i]=c[i];
	delete c;
	delete d;
	return 0;
}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -