码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 1995 (快速幂)

时间:2017-03-05 22:58:01      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:sum   link   pac   讲解   style   blog   span   nbsp   ++   

这道题普通做法会发生溢出且会超时,应当用快速幂来求解。

快速幂讲解

 1 #include <cstdio>
 2 #include <cmath>
 3 using namespace std;
 4 int main(){
 5     int Z;
 6     scanf("%d",&Z);
 7     while(Z--){
 8         int M, H;
 9         unsigned long long sum  = 0;
10         scanf("%d%d",&M,&H);
11         for(int i = 0; i < H; i++){
12             long long a,b;
13             scanf("%lld%lld",&a,&b);
14             long long  ans = 1;
15             while(b){
16                 if(b&1){
17                     ans = (ans * a)%M;
18                     b--;
19                 }
20                 b/=2;
21                 a = (a*a)%M;
22             }
23             sum += (ans%M);
24         }
25         printf("%llu\n",sum%M);
26     }
27     return 0;
28 }

 

POJ 1995 (快速幂)

标签:sum   link   pac   讲解   style   blog   span   nbsp   ++   

原文地址:http://www.cnblogs.com/Wade-/p/6507032.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!