分治法大整数乘法c语言,大整数乘法(分治法)「建议收藏」

分治法大整数乘法c语言,大整数乘法(分治法)「建议收藏」#include#includeusingnamespacestd;intnum(intu)//计算乘数的位数{inti,num;i=1;num=u/10;while(num!=0){u=num;num=u/10;i=i+1;}//cout<returni;}voidMUL(intu,inti,int&w,int&x)//将乘数分治{w=u/(pow…

大家好,又见面了,我是你们的朋友全栈君。

#include

#include

using namespace std;

int num(int u) //计算乘数的位数

{

int i,num;

i=1;

num=u/10;

while(num!=0)

{

u=num;

num=u/10;

i=i+1;

}

// cout<

return i;

}

void MUL(int u,int i,int &w,int &x)//将乘数分治

{

w=u/(pow(10,i/2));

x=u-w*pow(10,i/2);

// cout<

}

int main(int argc, char* argv[])

{

int multi,multi1;//定义两个乘数

int number,number1,w,x,y,z,product,product1,product2,product3;

cout<

cin>>multi>>multi1;

number=num(multi);//计算位数

number1=num(multi1);

MUL(multi,number,w,x);//将乘数分治

MUL(multi1,number1,y,z);

if(number%2!=0)//如果乘数位数是奇数

{

product=w*y*pow(10,number-1);

product1=((w+x)*(y+z)-w*y-x*z)*pow(10,number/2);

product2=x*z;

product3=product+product1+product2;

// cout<

cout<

}

else//如果乘数位数是偶数

{

product=w*y*pow(10,number);

product1=((w+x)*(y+z)-w*y-x*z)*pow(10,number/2);

product2=x*z;

product3=product+product1+product2;

// cout<

cout<

}

return 0;

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137257.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号