俄式乘法算法c语言,算法分析实验之俄式乘法

题目描述

俄式乘法,又被称为俄国农夫法,它是对两个正整数相乘的非主流算法。假设m和n是两个正整数,我们要计算它们的积。它的主要原理如下: if n is 偶数 n m=n/2 2m else n * m=(n-1)/2 + m 该算法只包括折半,加倍,相加等几个简单操作,因此实现速度非常快。具体计算如下图所示:

wKgAYV0a6c-APqRTAACF0QxE2k8721.png

输入

两个正整数 n,m。

输出

n和m的乘积。

输出整个求和表达式,运算符与数字之间用一个空格隔开。

样例输入复制

50 65

样例输出

130 + 1040 + 2080 = 3250

样例分析:

50 65

25 130 左边数为奇数

12 260

6 520

3 1040   左边数为奇数

1 2080   左边数为奇数

把左边数为奇数的右边的数全部加起来:130+1040+2080=3250

#include

using namespace std;

int main()

{

int n,m;

cin>>n>>m;

int temp[1005];

int k=0;

while(n!=0)

{

if(n%2==1){

temp[k]=m;

k++;

}

n/=2;

m*=2;

}

int sum=0;

for(int i=0;i

{

sum+=temp[i];

cout<

if(i==k-1) cout<

else cout<

}

return 0;

}

标签:俄式,1040,奇数,int,2080,数为,算法,130,乘法

来源: https://www.cnblogs.com/solititude/p/12551496.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值