zoukankan      html  css  js  c++  java
  • HDU2035 人见人爱A^B【快速模幂】

    问题链接HDU2035 人见人爱A^B

    问题简述:计算A^B的最后三位整数。

    问题分析这问题可以用乘方取模函数来解决。

    程序说明:增加一个C++语言的版本。


    AC的C++语言程序如下:
    #include <iostream>
    
    using namespace std;
    
    const int MOD = 1000;
    
    // 快速模幂计算函数
    int powermod(long long a, int n, int m)
    {
        long long res = 1;
        while(n) {
            if(n & 1) {        // n % 2 == 1
                res *= a;
                res %= m;
            }
            a *= a;
            a %= m;
            n >>= 1;
        }
        return res;
    }
    
    int main()
    {
        int a, b;
    
        while(cin >> a >> b && (a || b))
            cout << powermod(a, b, MOD) << endl;
    
        return 0;
    }


    AC的C语言程序如下:
    /*
     * 乘方取模
     *
     * 已知给定的正整数a、n和m,计算x的值,a^n = x (mod m)。
     *
     * 二分法用在这里也很有效果。
     */
    
    #include <stdio.h>
    
    long powermod(long a, long n, long m)
    {
        long res = 1L;
        while(n) {
            if(n & 1L) {
                res *= a;
                res %= m;
            }
            a *= a;
            a %= m;
            n >>= 1;
        }
        return res;
    }
    
    int main(void)
    {
        long a, n;
        for(;;) {
            scanf("%ld %ld", &a, &n);
            if(a==0 && n==0)
                break;
            printf("%ld
    ", powermod(a, n, 1000L));
        }
    
        return 0;
    }



  • 相关阅读:
    wamp配置虚拟主机
    php单例模式
    YII缓存操作
    YII的延迟加载
    之字形打印二叉树
    对称的二叉树
    二叉树的下一节点
    删除链表的重复节点
    链表中环的入口
    字符流中第一个不重复的字符
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564970.html
Copyright © 2011-2022 走看看