题解 P1014 【Cantor表】
八个月想一等
2018-11-17 15:34:54
**蒟蒻首发**
~~这个题卡了我三天,用了各种脑残方法最后在~~@八重樱飞(十分感谢)~~的帮助下做了出来~~
~~这个方法真的简单~~
先是找规律
1/1(第一行)
1/2 2/1(第二行)
3/1 2/2 1/3(第三行)
1/4 2/3 3/2 4/1(第四行)
......
顺着看下来就是规律
注意一下每行的第一个数与层数是有关系的
上代码
```c
#include<iostream>
using namespace std;
int main(){
int x,y,h=1,N,k;
//x是分子,y是分母,h是行数,N是个数,k是 第N个数 与##~~~~ 对应行的第一个数 的距离(别卡在这,先往后看)
cin>>N;
while(N>h){//用循环来算出行数
N=N-h;
h++;
}//很巧的是循环完后 N的值就是 第N个数对应行 的第几个(敲黑板)
k=N-1;// 第N个数 与对应行的第一个数 的距离
if(h%2==0)x=1+k,y=h-k;//判断行数是奇数还是偶数
// (奇数:分子减k分母加k,偶数反之)
else x=h-k,y=1+k;
cout<<x<<"/"<<y;//然后就算出来了
return 0;
}
```
祝各位早日AC
~~为什么我打一下回车显示出来只有一个空格~~
~~令人窒息的投稿~~