80分求调
查看原帖
80分求调
667250
Xiphi楼主2024/4/22 18:39
#include<bits/stdc++.h>
#define _for(i,x,y) for(int i=x;i<=y;++i)
#define _forp(i,x,y,z) for(int i=x;i<=y;i+=z)
#define _rep(i,x,y) for(int i=x;i<y;++i)
using namespace std;
#define int long long
vector<int> Pow;
int q;
__int128 s[10005],s1[10005];
inline void write(__int128 x)
{
    if(x<0){
    	putchar('-');
		x=-x;
	}
    if(x>9)
		write(x/10);
    putchar(x%10+'0');
}

signed main(){
//	freopen("test.in","r",stdin);
//	freopen("test.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);
    Pow.push_back(0);
    _for(i,1,10000){
    	Pow.push_back(i*i*i);
	}
    Pow.push_back(0);
	_for(i,1,10000){
		s[i]=s[i-1]+Pow[i+1]-Pow[i];
		s1[i]=s1[i-1]+(Pow[i+1]-Pow[i])*i;
	}
	cin>>q;
	while(q--){
		int x;
		cin>>x;
		__int128 L=0,pos=0,R=10000;
		while(L<=R){
			int mid=L+R>>1;
			if(s[mid]<=x) pos=mid,L=mid+1;
			else R=mid-1;
		}
		write(s1[pos]+(x-s[pos])*(pos+1)),putchar('\n');
	}
	return 0;
}




2024/4/22 18:39
加载中...