序列计数问题

时间限制:1秒        内存限制:128M

题目描述

给定一个正整数nn,请问有多少种序列,满足序列的每个元素都大于等于33,并且序列的元素之和等于nn?

输入描述

一行一个整数n(1≤n≤2000)n(1≤n≤2000)

输出描述

输出答案,对109+710​9​​+7取模后输出。

样例输入1

 
  1. 7

样例输出1

 
  1. 3

提示

第一个样例中,有三种序列:73 44 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;
}

 万事咯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值