您现在的位置是:主页 > news > 毕业设计做网站用什么/郑州网络营销推广公司

毕业设计做网站用什么/郑州网络营销推广公司

admin2025/5/7 21:00:12news

简介毕业设计做网站用什么,郑州网络营销推广公司,h5网站和传统网站区别,纯静态网站怎么入侵1043 幸运号码基准时间限制:1秒 空间限制:131072KB 分值:20难度:3级算法题收藏关注1个长度为2N的数,如果左边N个数的和 右边N个数的和,那么就是一个幸运号码。例如:99、1230、123…

毕业设计做网站用什么,郑州网络营销推广公司,h5网站和传统网站区别,纯静态网站怎么入侵1043 幸运号码基准时间限制:1秒 空间限制:131072KB 分值:20难度:3级算法题收藏关注1个长度为2N的数,如果左边N个数的和 右边N个数的和,那么就是一个幸运号码。例如:99、1230、123…

1043 幸运号码
基准时间限制:1秒 空间限制:131072KB 分值:20难度:3级算法题
收藏
关注
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[i][j]表示i个数的和为j的总数,这里面是包括0开头的情形,有dp[i][j]=dp[i-1][j-k](k从0到9)。很好想,i个数组成总和为j的数量就来自于i-1个数 里面能 在最前面加0到9的数字使得加完之后和为j。

这里面包含了0开头的,把0去掉的方法就是dp[i][j]-dp[i-1][j]。dp[i-1][j]就代表了在i个数中,开头为0的个数,减去就是i个数中开头不为0的个数。原因很明显,i个数和为j与i-1个数和为j,就差了一个位置为0。而这一个位置因为一开始咱们的想法就是在最前面加的数字,所以这个位置就差在了最前面的位置上

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<limits.h>
#include<stack>
#include<vector>
#include<queue>
#include<math.h>
#include<map>
using namespace std;
typedef long long ll;
#define maxn 10005
#define Mod  1000000007
ll dp[2][maxn];
int main()
{ll n,m,i,j,k,sum,ans=0;scanf("%lld",&n);dp[0][1]=1;for(i=0;i<=9;i++)dp[1][i]=1;for(i=2;i<=n;i++){for(j=0;j<=n*9;j++){sum=0;for(k=0;k<=9;k++){if(j>=k)sum=(sum+dp[(i-1)%2][j-k])%Mod;elsedp[i%2][j]=0;	}dp[i%2][j]=sum;	}}for(i=0;i<=9*n;i++)ans=(ans+dp[n%2][i]*(dp[n%2][i]-dp[(n-1)%2][i])%Mod)%Mod;printf("%lld\n",ans);
}