E 宝藏男孩
简单dp,也就是说,还是找规律。
long long必不可少。
最后存放宝藏的位置一定是最中间的位置。
画个图就知道规律了。
代码:
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll dp[500010]; void f(){ dp[1]=0; for(ll i=3;i<500010;i+=2) dp[i]=dp[i-2]+4*(i-1)*(i/2);//其中4*(n-1)为最外围的格子数。n/2为最外围格子到达最中间格子需要的步数。 } int main(){ int t; cin>>t; f(); while(t--){ int n; cin>>n; cout<<dp[n]<<endl; } return 0; }