汉诺塔
1 #include <stdio.h> 2 #define MOD 1000000 3 4 int pow_mod(int m,int n) 5 { 6 long long int t; 7 if(n==0) return 1%MOD; 8 else if(n==1) return 2%MOD; 9 else{ 10 t = pow_mod(m,n/2);//递归调用,采用二分递归算法,,注意这里 n/2会带来奇偶性问题 11 t = (t * t)%MOD;//二分,乘上另一半再求模 12 if(n&1) t = t*m%MOD;// n 是奇数,因为 n/2 还少乘了一次 m 13 return t; 14 } 15 } 16 int main() 17 { 18 int cases; 19 scanf("%d",&cases); 20 while(cases--) 21 { 22 int m; 23 scanf("%d",&m); 24 printf("%d\n",pow_mod(2,m)-1); 25 } 26 return 0; 27 }