题解 P1014 【Cantor表】

八个月想一等

2018-11-17 15:34:54

Solution

**蒟蒻首发** ~~这个题卡了我三天,用了各种脑残方法最后在~~@八重樱飞(十分感谢)~~的帮助下做了出来~~ ~~这个方法真的简单~~ 先是找规律 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 ~~为什么我打一下回车显示出来只有一个空格~~ ~~令人窒息的投稿~~