http://acm.hdu.edu.cn/showproblem.php?pid=4704
求(2^n)%mod的方法
#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
#include <vector>
#include <queue>
using namespace std ; //(2^n)%mod=(2^(n%(mod-1)))%mod const int mod= ; __int64 POW(int b)
{
__int64 res=,a= ;
while(b)
{
if(b&)res=(res*a)%mod ;
a=(a*a)%mod ;
b>>= ;
}
return res ;
} char s[] ; int main()
{
while(~scanf("%s",s))
{
int len=strlen(s) ;
__int64 n= ;
for(int i= ;i<len ;i++)
n=(n*+s[i]-'')%(mod-) ;
printf("%I64d\n",POW(n-)) ;
}
return ;
}