//poj 1240
//sep9
#include <iostream>
using namespace std;
typedef __int64 INT;
char x[32],y[32];
INT M;
INT C(INT n,INT m)
{
INT ans=1;
m=m>(n-m)?(n-m):m;
for(INT i=1;i<=m;++i)
ans=ans*(n-i+1)/i;
return ans;
}
INT get_sum(int a1,int b1,int a2,int b2)
{
INT ans=1,cnt=0;
++a1,--b2;
while(a1<b1){
int len=0;
for(int i=a2;i<b2;++i){
++len;
if(x[a1]==y[i])
break;
}
ans*=get_sum(a1,a1+len,a2,a2+len);
a1+=len;
a2+=len;
++cnt;
}
ans*=C(M,cnt);
return ans;
}
int main()
{
while(scanf("%I64d",&M)==1&&M){
scanf("%s%s",x,y);
int len=strlen(x);
printf("%I64d\n",get_sum(0,len,0,len));
}
return 0;
}
poj 1240 Pre-Post-erous! 分治
最新推荐文章于 2019-07-03 07:20:47 发布