前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分治法大整数乘法c语言,大整数乘法(分治法)「建议收藏」

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

作者头像
全栈程序员站长
发布2022-09-05 10:18:55
1.1K0
发布2022-09-05 10:18:55
举报
文章被收录于专栏:全栈程序员必看

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

#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.cn/137257.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档