poj_1995 Raising Modulo Numbers (快速幂)

Posted willendless

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj_1995 Raising Modulo Numbers (快速幂)相关的知识,希望对你有一定的参考价值。

【题目链接】

  http://poj.org/problem?id=1995

【算法】

  1. 基本快速幂(二进制思想)
  2. 注意两个int相乘可能溢出,加(long long)但是相乘不要加括号,不然会先溢出在类型转换
 1 #include <iostream>
 2 using namespace std;
 3 int z,m,h,cur,ans,a,b;
 4 void calc()
 5 {
 6     cin>>a>>b;
 7     cur = 1 % m;
 8     for(; b; b >>= 1) {
 9         if(b & 1) cur = (long long)cur * a % m;
10         a = (long long)a * a % m;
11     }
12     ans = (long long)(ans+cur) % m;
13 }
14 int main()
15 {
16     cin>>z;
17     while(z--)
18     {
19         ans = 0;
20         cin>>m>>h;
21         while(h--) calc();
22         cout << ans%m << endl;
23     }
24 }

 

以上是关于poj_1995 Raising Modulo Numbers (快速幂)的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1995 Raising Modulo Numbers(快速幂)

POJ-1995:Raising Modulo Numbers

$POJ1995$ $Raising$ $Modulo$ $Numbers$

POJ1995 Raising Modulo Numbers

poj 1995 Raising Modulo Numbers 题解

Raising Modulo Numbers(POJ 1995 快速幂)