zoukankan      html  css  js  c++  java
  • 数学问题-二分求幂例题

    例 4.10 人见人爱 A ^ B 

    题目描述

    求 A^B 的最后三位数表示的整数。说明:A^B 的含义是“A 的 B 次方” 

    输入

    输入数据包含多个测试实例,每个实例占一行,由两个正整数 A 和 B 组成 ( ),如果 A=0, B=0,则表示输入数据的结束,不做处理。 

    输出

    对于每个测试实例,请输出 A^B 的最后三位表示的整数,每个输出占一行。

    样例输入

    2 3 
    12 6 
    6789 10000 
    0 0

    样例输出

    8 
    984 
    1 

    解题代码

    #include<cstdio>
    
    int main()
    {
        int a, b;
        while (scanf("%d%d", &a, &b) != EOF)
        {
            if (a == 0 && b == 0)break;
            int ans = 1;//保存结果的最终变量,初始值为1
            while (b != 0)//若b为0,即对b转换二进制过程结束
            {
                if (b % 2 == 1)//当前二进制位为1,则需要累乘a的2^k次至变量ans
                {
                    ans *= a;
                    ans %= 1000;//求后三位数
                }
                b /= 2;//b除以2
                a *= a;//求下一位二进制位的权重,即从a的1次开始,依次求a的2次、4次......
                a %= 1000;//求a的后三位
            }//一边计算b的二进制值,一边计算a的2^k次,并将需要的部分累乘到ans上
            printf("%d
    ", ans);
        }
        return 0;
    }
  • 相关阅读:
    HttpClient
    spring入门
    morphia进阶
    morphia基本API方法
    mangodb数据库框架morphia注解
    学与思
    解决vscode执行yarn启动项目报错
    使用swiper+动画实现轮播图自动播放
    vue中使用el-tree实现一行显示多条数据
    使用git命令提交部分修改代码
  • 原文地址:https://www.cnblogs.com/yun-an/p/11074833.html
Copyright © 2011-2022 走看看