3 条题解

  • 0

    数学可做,设kk为最大的整数,使得k3<=xk^3<=x,根据数学的求和(平方和、立方和)公式,加上化简,可得到最终的结果为:image

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    ll sum1(ll n){return n*(n+1)/2;}
    ll sum2(ll n){return n*(n+1)*(2*n+1)/6;}
    ll sum3(ll n){return sum1(n)*sum1(n);}
    long long query(ll x){
    	ll k=pow(x,1.0/3);
    	if((k+1)*(k+1)*(k+1)<=x) k++;
    	ll ans=3*sum3(k-1)+3*sum2(k-1)+sum1(k-1)+k*(x-k*k*k+1);
    	return ans;
    }
    int main(){
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    	int q;
    	ll x;
    	cin>>q;
    	while(q--){
    		cin>>x;
    		cout<<query(x)<<"\n";
    	}
    	return 0;
    }
    

    信息

    ID
    888
    时间
    1000ms
    内存
    512MiB
    难度
    9
    标签
    (无)
    递交数
    50
    已通过
    2
    上传者