解析:
设f[i]:表示用3~i数凑出和为i的方案数
f[i]=f[i-3]+f[i-4]+f[i-5]+…+f[i-i]
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=3000;
const int MOD=1e9+7;
ll f[N];
int s;
int main()
{
cin>>s;
f[0]=1;
for(int i=3;i<=s;i++)
for(int j=3;j<=i;j++)
{
f[i]=(f[i]+f[i-j])%MOD;
}
printf("%lld\n",f[s]);
}