俄罗斯乘法

俄罗斯乘法是一种计算两数相乘的算法。
举例如下:
计算 35*72
过程
35        72
17        144
8          288
4          576
2          1152
1          2304
从上到下,对每一行,若左边的数字若为奇数,则将右边的数字取出,累加。
72+144+2304=2520
累加的结果2520即为乘积。
因为该算法不需要已知九九乘法表。
所以在计算机中有应用。
具体参考:《算法基础
原理是将左边的数除以2 右边的数乘以2,左边数除以2以后有余数(余数为1),则将右边的数(1*右边的数)累加到结果中。
                                                                              ------摘自百度百科
 1 #include<iostream>
 2 using namespace std;
 3 int Russia(int m, int n)
 4 {
 5     int result = 0;
 6     while (m != 1)
 7     {
 8         if (m % 2 != 0)
 9             result += n;
10         m = m / 2;
11         n = n * 2;
12     }
13     result += n;
14     return result;
15 }
16 int main()
17 {
18     int m, n;
19     cin >> m >> n;
20     cout << Russia(m, n) << endl;
21 
22 }
View Code

 

posted @ 2015-04-07 23:04  夏弥  阅读(617)  评论(0编辑  收藏  举报