题目链接:哆啦A梦传送门
题解:
递推。我们看第一个 :有两条路可以到达底部。a1=2。
第二个:我们在第一个的基础上往下走,到达第一个底部的每个点都有a1条路径,有两个点,每个点有两条路走到底部,那么a2=2*2*a1。
第三个:我们在第二个的基础上往下走,到达第二个底部的每个点都有a2条路径,有3个点,每个点有两条路走到底部,那么a3=2*3*a2。
最后我们就容易得出结果了 an=2*n*a(n-1),即an=2^n*n!。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod=1000003;
LL ans[1000010];
int main(){
ans[1]=2;
for(int i=2;i<=1000005;i++)
{
ans[i]=ans[i-1]*2*i%mod;
}
int ncase;
scanf("%d",&ncase);
while(ncase--)
{
LL n;
scanf("%lld",&n);
if(n>=mod) {
puts("0");
continue;
}
printf("%lld\n",ans[n]);
}
return 0;
}
/*
100000000
*/