[解题思路]
通过找规律来求解该题, 通过把Cantor矩阵放斜得到一个三角形就可以发现,第一行1个数、第二行2个数、第三行3个数、... 、第n行n个数,所以我们首先要找出输入的n在第几行. 接着就是找出该数在这一行中的第几位数, 但是这里有个问题, 当第1行时时从左到右,第2行是从右到左,第3行又是同第1行一样,所以通过这个规律可以得出当 i%2==0时是从右到左的,当i%2!=0是从左到右的.
[代码实现]
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int i=0; /*第几列*/
while(n>i) /*找出n在第几列*/
{
n-=i; /*第i行中的第几个数,我们假定默认是从右到左,即n为从右向左数的第几个*/
i++;
}
if(i%2==0) /*从右到左*/
{
cout<<n<<"/"<<(i-n)+1;
}
else cout<<(i-n)+1<<"/"<<n; /*从左到右*/
return 0;
}