#include <stdio.h>
#include <math.h>
#include <string.h>
#include <iostream>
using namespace std;
const int mod=1e9+7;
int f[100010];
void init()
{
f[0]=1;
int i,j,k,flag=1;
for(i=1;i<=100000;i++)
{
f[i]=0;
for(j=1;;j++)
{
int t=i-j*(3*j-1)/2;
int tt=i-j*(3*j+1)/2;
if(j&1)
flag=1;
else
flag=-1;
if(t<0&&tt<0)
break;
if(t>=0)
f[i]=(f[i]+flag*f[t])%mod;
if(tt>=0)
f[i]=(f[i]+flag*f[tt])%mod;
}
f[i]=(f[i]+mod)%mod;
}
}
int main()
{
init();
int T;
cin>>T;
while(T--)
{
int n;
cin>>n;
cout<<f[n]<<endl;
}
return 0;
}
tjut 4651
最新推荐文章于 2016-11-04 22:02:44 发布