[ 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 }