3 条题解
-
0
Guest
-
0
数学可做,设为最大的整数,使得,根据数学的求和(平方和、立方和)公式,加上化简,可得到最终的结果为:
#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; }
- 1
信息
- ID
- 888
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 50
- 已通过
- 2
- 上传者