时间限制:1秒 内存限制:128M
题目描述
给定一个正整数nn,请问有多少种序列,满足序列的每个元素都大于等于33,并且序列的元素之和等于nn?
输入描述
一行一个整数n(1≤n≤2000)n(1≤n≤2000)
输出描述
输出答案,对109+7109+7取模后输出。
样例输入1
-
7
样例输出1
3
提示
第一个样例中,有三种序列:7
、3 4
、4 3
OKOK,要想解决这道题就必须要找规律,n=3,=4,=5都要一种方法,而6有两种,7三种,8四种,9六种。 所以规律就是a[9]=a[6]+a[5]+a[4]+a[3];
规律找到了,接下来就是AC代码
#include<bits/stdc++.h>
using namespace std;
long long n,biao[2009];
int main(){
long long n;
cin>>n;
for(int i=3;i<=n;i++){
for(int j=1;j<=i-3;j++){
biao[i]+=biao[j];
biao[i]%=1000000007;
}
biao[i]++;
biao[i]%=1000000007;
}
cout<<biao[n];
return 0;
}
万事咯