View Code of Problem 3698

#include<stdio.h>
main()
{
	int tc,t,i,j;
	long int a[10000];
	long int b[1000];
	long int ssum,sum;
	int dui,hang,lie;
	long int s;
	scanf("%d",&tc);
	
	b[0]=1;b[1]=2;j=2;
	for(i=2;i<1000;i++)
	{
		b[i]=b[i-1]+j;
		j++;
	}
	while(tc-->0)
	{
		sum=0;
		scanf("%ld",&s);
		for(i=0;;i++)
		{
			a[i]=i+1+(i+1)*i/2;
			ssum=sum;
			sum+=a[i];
			if(sum>=s&&ssum<s)
			{
				dui=i+1;
				break;
			}
		}
		t=s-ssum;
		for(i=0;;i++)
		{
			if(t>=b[i]&&t<b[i+1])
			{
				hang=i+1;
				break;
			}
		}
		lie=t-b[i]+1;
		printf("%d %d %d\n",dui,hang,lie);
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 3698