Cantor的数表

题目描述

如下数列,前5项分别是1/1,1/2,2/1,3/1,2/2……。输入n,输出第n项。

1/1   1/2   1/3   1/4   1/5

2/1   2/2   2/3   2/4

3/1   3/2   3/3

4/1   4/2

5/1

样例输入

3

14

7

12345

样例输出

2/1

2/4

1/4

59/99

思路:

通过斜线对数据进行分类

#include <stdio.h>
int main(void)
{
int i = ;int j = ;int count = ;int k = ;
int left;int right;
int flag = ;
scanf("%d",&count);
while()
{
k++;
if((k%) == )
{
for(right = k,left = ; right >= ; right--,left++)
{
i++;
printf("count:%d:%d/%d\n",i,left,right);
if(i == count)
{
flag = ;
break;
}
} }else{
for(left = k,right = ; left >= ; left--,right++)
{
i++;
printf("count:%d:%d/%d\n",i,left,right);
if(i == count)
{
flag = ;
break;
}
} }
if(flag > )
break;
}
printf("%d/%d\n",left,right);
return ;
}
上一篇:003-explode分割字符串


下一篇:讨论一下PHP相关技能的层次