Cantor的数表 数学

#include<stdio.h>
int main()
{
	int n;
	while(scanf("%d",&n)==1)
	{
		int k=1,s=0;
		for(;;)
		{
			s+=k;
			if(s>=n)//所求项是第k条对角线的倒数第s-n+1个元素 
			{
				if (k % 2)//如果在第偶数斜线条 
				    printf("%d/%d\n",s-n+1,k-s+n);
				else
				    printf("%d/%d\n",k-s+n,s-n+1);
				break;
			}
			k++;  
		}
	}
	return 0;
} 
/*
#include<stdio.h>
#include<math.h>
int main()
{
	int n;
	while(scanf("%d",&n)==1)
	{
		int k=(int)floor((sqrt(8.0*n+1)-1)/2-1e-9)+1;
		int s=k*(k+1)/2;
		if (k % 2)//如果在第偶数斜线条 
			printf("%d/%d\n",s-n+1,k-s+n);
		else
			printf("%d/%d\n",k-s+n,s-n+1);
	}
	return 0;
} */

你可能感兴趣的:(数学)