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

📄 大整数乘法040640319.cpp

📁 内含各种算法的可执行代码。内容简单
💻 CPP
字号:
#include<math.h> 
#include<stdlib.h> 
#include<iostream.h>
int n,x,y;
long rt;

void input() 
{ 
cout<<"两个乘数的位数是n,请输入n的值(为简单起见,设n是2的幂): "; 
cin>>n; 
cout<<endl<<"请输入两个乘数的值:"<<endl; 
cout<<"x="; 
cin>>x; 
cout<<"y="; 
cin>>y; 
} 

int calculate(int a,int b)					//递归方式计算函数 
{ 
int temp1,temp2; 
long total; 
int x1,x0,y1,y0; 
if(n>1)										//开始分治 
{ 
	temp1=(int)pow(10,n/2); 
	temp2=(int)pow(10,n); 
	x1=a/temp1;								//x值的前半部分 
	x0=a-x1*temp1;							//x值的后半部分 
	y1=b/temp1;								//y值的前半部分 
	y0=b-y1*temp1;							//y值的后半部分 
	n=n/2;									//经过分治后,整数的位数 
	total=calculate(x1,y1)*temp2+(calculate(x1+x0,y1+y0)-calculate(x1,y1)-calculate(x0,y0))*temp1+calculate(x0,y0); 
}											//书中公式uv=wy2~n+((w+x)(y+z)-wy-xz)2~n/2+xz
else 
{
	return a*b;
	cout<<"输入的位数不正确";
}
return total; 
} 
void print1()
{
cout<<"********************************************************************************"<<endl;
cout<<"题目:大整数乘法!"<<endl;
cout<<"作者:040640319	付斌"<<endl;
cout<<"说明:原题目中要将整数变为2进制数进行计算,先程序将公式转化位十进制计算"<<endl;
cout<<"********************************************************************************"<<endl;
}

void print2()
{ 
cout<<"乘数x="<<x<<"\t"<<"y="<<y<<endl; 
cout<<"结果rt="<<rt<<endl; 
} 

void main()
{ 
char c; 
do{ 
	print1();
	input(); 
	rt=calculate(x,y); 
	print2(); 
	cout<<"是否继续?(y/n)"<<endl; 
	cin>>c; 
	}
while(c=='Y'||c=='y'); 
} 

⌨️ 快捷键说明

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