俄罗斯乘法是一种计算两数相乘的算法。
举例如下:
计算 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 }