uvalive5092(找规律)
生活随笔
收集整理的這篇文章主要介紹了
uvalive5092(找规律)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
給出n和m,我們有一個由1~n組成的n個數字的數列a[],如果a[i]>i,我們就把ans++,我們要求出ans==m的數列有多少個。
思路:
打個表,找規律,規律如代碼中所示,類似于楊輝三角。
代碼:
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm>using namespace std;const int mod=1000000007;long long ans[1015][1010];void init() {memset(ans,0,sizeof(ans));ans[1][0]=1;for(int i=2;i<=1005;i++){for(int j=0;j<i;j++){if(j==0||j==i-1){ans[i][j]=1;continue;}long long a1=ans[i-1][j-1]%mod;long long a2=ans[i-1][j]%mod;long long t1=i-j;long long t2=j+1;ans[i][j]+=a1*t1;ans[i][j]%=mod;ans[i][j]+=a2*t2;ans[i][j]%=mod;}}return ; }int main() {init();int n,m;while(scanf("%d%d",&n,&m)!=EOF){printf("%lld\n",ans[n][m]%mod);}return 0; }總結
以上是生活随笔為你收集整理的uvalive5092(找规律)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu3549(又是最大流模板题)
- 下一篇: uvalive5096(积分题)