1083Cantor表


[解题思路]

    通过找规律来求解该题, 通过把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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值