View Code of Problem 3698

#include<iostream>
#include<string>
#include<cmath>
#include<algorithm>
#include<map>
#include<vector>
#include<sstream> 
using namespace std;
int main(){
	int t;
	cin>>t;
	while(t--){
		long long n,i,a=0;
		cin>>n;
		for(i=1;n>0;i++)//堆数 
			n=n-(1+i)*i/2;
		i--;
		if(0==n)
			printf("%lld %lld %lld\n",i,i,i);
		else {
			n=n+(1+i)*i/2;
			long long j,temp=0;
			for(j=1;n>0;j++)
				n=n-j;
			j--;
			n+=j;
			printf("%lld %lld %lld\n",i,j,n);
		} 
	}
        return 0;
}

Double click to view unformatted code.


Back to problem 3698