[ CodeVS冲杯之路 ] P2952

  不充钱,你怎么AC?

  题目:http://codevs.cn/problem/2952/

 

  题目讲一个细胞可分裂成 2 个,那么当前数目就是2a,a 为时间

  然后 q 个细胞一起会死亡,也就是对 q 取模

  数据范围很大,要用快速幂(位运算无法取模会炸)

  坚持手打快速幂!快速幂原理在下面:

  http://www.cnblogs.com/hadilo/p/5719139.html

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<algorithm>
 7 using namespace std;
 8 
 9 int mo;
10 int mi(int a,int b)
11 {
12     int k=1;
13     b%=mo;
14     while (b>0)
15     {
16         if (b%2) k=k*a%mo;
17         a*=a;
18         a%=mo;
19         b/=2;
20     }
21     return k;
22 }
23 int main()
24 {
25     int a;
26     scanf("%d%d",&a,&mo);
27     printf("%d\n",mi(2,a));
28     return 0;
29 }

 

posted @ 2016-09-29 14:48  Hadilo  阅读(176)  评论(0编辑  收藏  举报