2 条题解

  • 1
    @ 2023-8-24 20:29:06
    #include <iostream>
    using namespace std;
    
    int main()
    {
        int a, b, sum = 0;
        cin >> a >> b;
        for (int i = 1; i <= a + b - 2; i++)
        {
            sum += i;
        }
        if ((a + b) % 2 == 1)
        {
            sum += a;
        }
        else
        {
            sum += b;
        }
        cout << sum << endl;
        return 0;
    }
    
    • 1
      @ 2023-4-6 20:10:31

      找规律,我们可以把排列顺序用金字塔来写一下

      将顺序记录好,可以发现分子+分母的和是多少,就能决定是在第几行。 image 在找一下分子和分母的规律,记录好顺序 以例子 2 /4 为例:

      1、先求和确定 2/4 是第几行

      2+4=6,和为 6 是第五行,为奇数行

      2、判断行数为奇数还是偶数,从而判断这个分数是在这一行的顺序,是从右向左还是从左

      向右。

      奇数行的顺序是从右向左数的,那最右边是 1,从右向左依次增大,要看分母是多少,就是

      第几个

      偶数行的顺序就是看分子是多少,就是第几个

      3、算出前几行有多少个数再加上这一行的顺序。

      2/4 的顺序就是 前 4 行有多少个数 + 4 =14

      主要代码:


      int a,b;

      cin>>a>>b;

      求和确定是第几行 和是 a+b 但是行是 a+b-1

      int sum=a+b-1;

      int s=0;


      算出前几行有多少个数

      for(int i=1;i<=sum-1;i++){

      s+=i;

      }


      判断行是奇数还是偶数,决定顺序

      奇数看分母的顺序,偶数看分子的顺序。

      if(sum%2==1){

      s+=b;

      }else{

      s+=a;

      }


      cout<<s;

      • 1

      信息

      ID
      1978
      时间
      1000ms
      内存
      256MiB
      难度
      6
      标签
      (无)
      递交数
      881
      已通过
      291
      上传者