codevs 2952 细胞分裂2——钻石级大水题
codevs 2952 细胞分裂 2
题目描述 Description
著名生物学家F博士发现了一种单细胞生物。
它长得像蚯蚓,分裂速度极快(每分钟一次),分裂也像蚯蚓一样,断成两段,再长成。
它很好斗,只要q只聚集在一起,就会q只一群打起来,当然都会打死。
假设一开始有1只,求a分钟后有多少只单细胞蚯蚓?
输入描述 Input Description
两个正整数A Q
输出描述 Output Description
答案
样例输入 Sample Input
4 5
样例输出 Sample Output
1
数据范围及提示 Data Size & Hint
对于50%数据,A<=20,Q<=100.
对于全部数据,A<=2*10^9,Q<=10^8.
/*作为一个钻石题用一个循环加pow就行了 */ #include<cstdio> #include<cmath> using namespace std; int main() { int a,q,s=1,i; scanf("%d%d",&a,&q); if(a>100000)//a如果太大会超时 s=pow(2,a); else for(i=1;i<=a;i++) { s*=2; s%=q;//防止s太大 } printf("%d",s%q); return 0; }
如果只用pow会超出范围。