思路
3步能走到的为2、4、6
4步能走到的为5、7、8、10
5步能走到的为9、11、12、13、15
结论:n步能走到的点为[sum (1至(n-1))-1,sum(1至n)]
这个闭区间还要排除sum(1至(n-1))和sum(1至n)-1
#define sc(x) scanf("%lld",&x)
#define pt(x) printf("%lld\n",x)
ll dp[2000005];
int main()
{
ll sum=3,p=3,last=2,ans=3;
dp[1]=1,dp[3]=2;
while(sum<=2000003)
{
sum+=p;p++;if(sum>2000003)break;
dp[last]=ans;last+=2;
while(last<=sum-2)dp[last]=ans,last++;
last++;dp[last]=ans;last--;ans++;
}
ll t;sc(t);ll n;
while(t--){sc(n);printf("%lld\n",dp[n]);}
}