zoukankan      html  css  js  c++  java
  • 算法分析实验之俄式乘法

    题目描述

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

    输入

    两个正整数 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<iostream>
    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<k;i++)
        {
            sum+=temp[i];
            cout<<temp[i];
            if(i==k-1) cout<<" "<<"="<<" "<<sum<<endl;
            else cout<<" "<<"+"<<" ";
        }
        return 0;
    }
  • 相关阅读:
    python使用thrift访问操作hbase
    js打开新页面
    设计模式
    c# dotfuscator 混淆后无法使用
    SQL server清空数据库日志脚本
    SQlserver 行转列
    SQLServer 脚本测试
    C# HttpWebRequest与HttpWebResponse详解
    反射
    SQl server master
  • 原文地址:https://www.cnblogs.com/solititude/p/12551496.html
Copyright © 2011-2022 走看看