1043 幸运号码
2016-09-05 12:41
232 查看
1043 幸运号码
基准时间限制:1 秒 空间限制:131072 KB 分值: 20
1个长度为2N的数,如果左边N个数的和 = 右边N个数的和,那么就是一个幸运号码。
例如:99、1230、123312是幸运号码。
给出一个N,求长度为2N的幸运号码的数量。由于数量很大,输出数量 Mod 10^9 + 7的结果即可。
Input
Output
Input示例
Output示例
基准时间限制:1 秒 空间限制:131072 KB 分值: 20
1个长度为2N的数,如果左边N个数的和 = 右边N个数的和,那么就是一个幸运号码。
例如:99、1230、123312是幸运号码。
给出一个N,求长度为2N的幸运号码的数量。由于数量很大,输出数量 Mod 10^9 + 7的结果即可。
Input
输入N(1<= N <= 1000)
Output
输出幸运号码的数量 Mod 10^9 + 7
Input示例
1
Output示例
9 思路:dp。 dp[i][j]表示i个数组成的数字的和为j的方案数 ,这个需要两遍dp,一个有前导0,一个没有。
#include<stdio.h> #include<algorithm> #include<iostream> #include<string.h> #include<queue> #include<math.h> #include<set> #include<vector> #include<string.h> using namespace std; typedef long long LL; int dp[1005][10005]; int dpp[1005][10005]; const int mod = 1e9+7; int main(void) { int i,j,k,n; memset(dp,0,sizeof(dp)); dp[0][0] = 1; scanf("%d",&n); for(i = 0; i < n; i++) { for(j = 0; j <= 10000 ; j++) { if(dp[i][j]==0) break; else {for(int s = 0; s <= 9; s++) { dp[i+1][s+j] = dp[i+1][s+j] + dp[i][j]; dp[i+1][s+j]%=mod; }} } } memset(dpp,0,sizeof(dpp)); dpp[0][0] = 1; for(i = 0; i < n; i++) { if(i==0) { for(j = 0; j <= 10000 ; j++) { if(dpp[i][j]==0) break; else {for(int s = 0; s <= 9; s++) { dpp[i+1][s+j] = dpp[i+1][s+j] + dpp[i][j]; dpp[i+1][s+j]%=mod; } }} } else { for(j = 1; j <= 10000 ; j++) { if(dpp[i][j]==0) { break; } for(int s = 0; s <= 9; s++) { dpp[i+1][s+j] = dpp[i+1][s+j] + dpp[i][j]; dpp[i+1][s+j]%=mod; } } } } LL sum = 0; for(i = 1; i <= 10000; i++) { if(dp [j] == 0)break; else { sum = sum + (LL)dp [i]*(LL)dpp [i]%mod; sum%=mod; } } printf("%lld\n",sum); return 0; }
相关文章推荐
- 【51Nod】1043 - 幸运号码(数位dp)
- 51nod 1043 幸运号码 数位dp
- 51Nod 1043 幸运号码 数位DP
- 51nod 1043 幸运号码 (数位dp)
- 51nod 1043 幸运号码(数位dp
- 51Nod-1043-幸运号码
- 1043 幸运号码 数位dp
- 51nod 1043 幸运号码
- 51NOD 1043 幸运号码
- AC日记——幸运号码 51nod 1043
- 51nod 1043 幸运号码
- 51Nod 1043 幸运号码
- 51nod 1043 幸运号码【dp+滚动数组】
- 51nod 1043 幸运号码(dp)
- 51nod 1043 幸运号码 数位dp
- 51nod 1043 幸运号码
- 1043 幸运号码 数位DP
- 51 nod 1043 幸运号码(数位DP)
- 51nod oj 1043 幸运号码 【数位DP】
- 51nod-1043 幸运号码(滚动数组)