题意:根据题上给出的代码,求出输出。
思路:题上给的数据大,用记忆化。
AC代码:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#define ll long long
#define mod 10000007
using namespace std;
const int maxn=10010;
int dp[maxn];
int a, b, c, d, e, f;
int fun(int n) {
if(dp[n]!=-1) return dp[n]; // 开始把dp初始化为-1。
if(n<0) return 0; //这点不太明白,为什么n有小于0的情况。
int s=0;
for(int i=1; i<=6; i++) {
s+=fun(n-i);
s%=mod;
}
s%=mod;
dp[n]=s;
return s;
}
int main() {
int n, caseno = 0, cases;
scanf("%d", &cases);
while( cases-- ) {
scanf("%d %d %d %d %d %d %d", &a, &b, &c, &d, &e, &f, &n);
memset(dp,-1,sizeof(dp));
dp[0]=a; dp[1]=b; dp[2]=c; dp[3]=d; dp[4]=e; dp[5]=f;
int k=fun(n) % 10000007;
printf("Case %d: %d\n", ++caseno, k);
}
return 0;
}