poj_1995 Raising Modulo Numbers (快速幂)
Posted willendless
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj_1995 Raising Modulo Numbers (快速幂)相关的知识,希望对你有一定的参考价值。
【题目链接】
http://poj.org/problem?id=1995
【算法】
- 基本快速幂(二进制思想)
- 注意两个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