思路:對於給定的n,s(i)即將n分解為i個數的組合數,也就是在n-1個位置插入i-1個板即C(n-1,i-1);

∑S=2^(n-1);

phi(1000000007)=1000000006;

對於n>=phi,有a^n%c=a^(n%phi(c)+phi(c))%c。

程式碼如下:

 #include<cstdio>
#include<cstring>
#define ll __int64
#define mod 1000000007
#define phi 1000000006
char s[];
ll pow(ll a,ll b)
{
ll ans=;
while(b){
if(b&) ans=ans*a%mod;
b>>=;
a=a*a%mod;
}
return ans;
}
int main()
{
int len,i;
ll a,b;
while(scanf("%s",s)!=EOF){
len=strlen(s);
a=b=;
for(i=;i<len;i++){
a=a*+s[i]-'';
if(b==&&a>=phi) b=phi;
a%=phi;
}
printf("%I64d\n",pow(,(a+b-)%phi));
}
return ;
}