• AC_快速积&快速幂的计算方法


    快速幂算法——可迅速求出a^b。其主要理论依据如下:

            1,当b为偶数时,a^b可以转为a^2的b/2次方。

            2,当b为奇数时,a^b可以转为a^2的b/2次方,再乘以a。

    //简单来说就是把b当成2进制形式,然后累加;
    // 2*7=2*(1*2^0+1*2^1+1*2^2)=2*1*2^0+2*1*2^1+2*1*2^2;

    //快速幂——加法
    //简单来说就是把b当成2进制形式,然后累加;
    // 7 = 111
    // 2*7=2*(1*2^0+1*2^1+1*2^2)=2*1*2^0+2*1*2^1+2*1*2^2;
    // = 2*1 + 2*2 + 2*4
    // = 2 + 4 +8
    // = 6 + 8
    // = 14

    // 2*(1*2^0) = 2   

    // 2*(1*2^1) = 4

    // 2 * (1*2^2) = 8

    代码:

    long long cul_sum(long a, long b)
    {
        long ans = 0;
        while (b)
        {
            cout << "-------------" << endl;
            if (b & 1)
            {
                ans = ans + a;//将每一项的值加起来  合并最后的结果
                cout << "ans = " << ans << endl;
            }
            a = a + a; //计算每一项的值
            b >>= 1;
            cout << "a = " << a << endl;
        }
        return ans;
    }
    
    int main()
    {
        long a, b;
        cin >> a >> b;
        cout<<cul_sum(a, b) << endl;
        return 0;
    }

    计算结果如下:

     快速幂——乘方

    //快速幂——乘方
    //简单来说就是把b当成2进制形式,然后累乘;
    // 7 = 111
    // 2*7=2^(1*2^0+1*2^1+1*2^2)=2^(1*2^0) * 2^(1*2^1) * 2^(1*2^2);
    // = 2^1 * 2^2 * 2^4
    // = 2 * 4 * 16
    // = 8 * 16
    // = 128
    #include<iostream>
    using namespace std; 
    long long cul_multi(long a, long b)
    {
        long ans = 1;
    
        while (b)
        {
            cout << "-------------" << endl;
            if (b & 1)
            {
                ans = ans * a;
                cout << "ans = " << ans << endl;
            }
            a = a * a;
            cout << "a = " << a << endl;
            b >>= 1;
        }
        return ans;
    }
    int main()
    {
        long a, b;
        cin >> a >> b;
        cout<<cul_multi(a, b) << endl;
        return 0;
    }

     

  • 相关阅读:
    oracle 锁表查看与解锁
    oracle 监视索引是否使用
    oracle 查看数据库版本
    mybatis 中文做参数报错
    windows mysql绿色版配置
    maven使用本地jar包
    Java 使用Jedis连接Redis数据库(-)
    Linux 安装redis
    ELK之在CentOS7.5上使用rpm包安装配置ELK7版本
    Ubuntu-18.04更改安装源为国内源
  • 原文地址:https://www.cnblogs.com/gcter/p/11155902.html
Copyright © 2020-2023  润新知