【正经题解】Cantor 表
2024-02-21 13:42:59
发布于:浙江
10阅读
0回复
0点赞
找规律
第 层 /
第 层 / /
第 层 / / /
第 层 / / / /
第 层 / / / / /
#include<cstdio>
int main()
{
int n;scanf("%d",&n);
int t=1,ans=0;//t是表示下一次跳到下一次的距离,ans是表示第几层
while(1)
{
if(n>t){n-=t;ans++;t++;}//printf("%d\n",ans);
else if(n==t&&ans%2==0){printf("1/%d",ans+1);break;}
//如果在n==t,并且为偶数层,就在第一行 第ans+1个
else if(n==t&&ans%2!=0){printf("%d/1",ans+1);break;}
//如果在n==t,并且为奇数层,就在第ans+1行 第一个
else if(n<t&&ans%2!=0){printf("%d/%d",ans+n-t+1,t-n+1);break;}
//如果在n<t,并且为奇数层,t-n+1表示该层最后一个往后走n-1步,ans+n-t+1示该层最后一个往上走t-1步
else if(n<t&&ans%2==0){printf("%d/%d",t-n+1,ans+n-t+1);break;}
// 如果在n<t,并且为偶数层,t-n+1表示该层最后一个往上走n-1步,ans+n-t+1示该层最后一个往后走t-1步
}
return 0;
}
这里空空如也
有帮助,赞一个