View Code of Problem 3698

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main() {
	int tc;
	scanf("%d",&tc);
	while(tc--)//n*(n+1)/2
	{
		long long int n,sum=0,x,y,z,i,j;
		scanf("%lld",&n);
		sum=n;
		for(i=1;sum>i*(i+1)/2;i++)//减去每一堆的总数
		//当不够减是,说明就在这一堆
		{
			sum=sum-i*(i+1)/2;
		}
		for(j=1;j<sum;j++)//减掉这一堆的每一层
		{
			sum=sum-j;
		}
		x=i;
		y=j;
		z=sum;
		printf("%lld %lld %lld\n",x,y,z);
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 3698