洛谷1014

  1. 题意:

 

  1. 解题思路:对于Contor输出,每一斜行的输出为等差数列,分别输出1个,2个 ,3个,4个,,,,
    所以先确定输入的整数N值在哪一斜行。
          具体为:当在第i行: 第(i-1)行之和<=  N   <=第i行之和
    之后判断所在行为奇数行还是偶数行。
    奇数行:
     i + 1 - x/x
    偶数行:
     x /i + 1 - x
  2. 代码:
    /*数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的
    */
    
    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #define max 10000
    using namespace std;
    int main()
    {
        int n;
        cin >> n;
        if (n == 0)
            return 0;
        int sum = 0;
        for (int i = 1; i < max; i++)
        {
            if ((sum < n) && (n <= sum + i))  //利用等差和的性质
            {
                //cout << "在第" << i << "行" << endl;
                if ((i % 2) == 0)//偶数行
                {
                    int x = n - sum;
                    cout << x << '/'<<i + 1 - x;
                    break;
                }
                else  //奇数行
                {
                    int x = n - sum;
                    cout << i + 1 - x <<'/'<< x;
                    break;
                }
            }
            else
                sum += i;
        }
    }

     

posted @ 2020-12-17 10:35  Quella'  阅读(134)  评论(0)    收藏  举报
Live2D