// noip18e 填数游戏: closed form
// f(n,n) for n=1..8: 2,12,112,912,7136,56768,453504,3626752 ; f(n,m)=f(n,n)*3^(m-n) (m>=n)
#include <stdio.h>
typedef long long ll;
static const ll MOD = 1000000007;
static ll pw(ll b, ll e){ ll r=1; b%=MOD; while(e){ if(e&1) r=r*b%MOD; b=b*b%MOD; e>>=1; } return r; }
int main(){
int n=0,m=0;
if(scanf("%d %d",&n,&m)!=2) return 0;
if(n>m){ int t=n; n=m; m=t; }
static const ll f[9]={0,2,12,112,912,7136,56768,453504,3626752};
ll ans;
if(n==1) ans = pw(2,m);
else ans = f[n]*pw(3,m-n)%MOD;
printf("%lld\n",ans);
return 0;
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 12.06 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #2 | 9.57 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #3 | 8.95 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #4 | 8.81 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #5 | 8.88 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #6 | 8.64 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #7 | 9.08 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #8 | 8.56 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #9 | 8.83 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #10 | 8.38 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #11 | 8.99 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #12 | 8.68 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #13 | 8.84 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #14 | 8.93 us | 16 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #15 | 8.64 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #16 | 9.08 us | 16 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #17 | 8.84 us | 16 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #18 | 8.69 us | 16 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #19 | 8.72 us | 16 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #20 | 8.54 us | 16 KB | Wrong Answer | Score: 0 | 显示更多 |