您的位置:首页 > 其它

1083Cantor表

2015-11-27 16:48 218 查看




[解题思路]

通过找规律来求解该题, 通过把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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: