1 条题解

  • 0
    @ 2025-8-24 22:31:13

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Thomas_Cat
    越学越菜。

    搬运于2025-08-24 22:31:13,当前版本为作者最后更新于2021-04-17 23:45:36,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    签到题。

    由题意知道题目中由三种输入方式分别为是 xy,xz,yzx-y,x-z,y-z 其中 (x>y>z)(x>y>z)

    因此题目可以简化为:

    得出 xy,xz,yzx-y,x-z,y-z 中任意一个并且按照题目中所给的比例求出 x,y,zx,y,z 即可,x,y,zx,y,z 即为 3:2:13:2:1 的关系。

    一些证明:(设 ab,bc=1a-b,b-c=1

    任何一个比例 a:b:ca:b:c 都可以化成 1:ba:ca1:\dfrac{b}{a}:\dfrac{c}{a}

    任何一个满足条件的比例都可以写成 1:a:b×a11:a:b \times a-1,因为 (b×a1+1)a=b\dfrac{(b \times a-1+1)} {a} = b

    bb 是一个整数,所以最后就是要 ba1ba-1 “整除” a+1a+1

    显然 a+1ba1a+1 \ge ba-1

    那么 (b1)a2(b-1)a \le 2

    bb 是整数,而且这里 a>1a>1 ,那么 bb 就是 2211

    因为 1<a<b×a11<a<b\times a-1,所以如果 b=1b=1 , 那么则有 1<a<a11<a<a-1,矛盾。

    所以 bb 只能是 22 ,于是转化为一个 2a12a-1“整除”a+1a+1

    注意 2a12a-1 除以 a+1a+1 的值不可能大于等于 22,所以 2a1=a+12a-1=a+1,解出 a=2a = 2

    于是最后得到的比例就是:1:2:31:2:3

    也就是 b×a=1=2×21=3b \times a = 1 = 2 \times 2 - 1 = 3

    代码如下:

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        unsigned long long t;
        cin>>t;
        while(t--){
            string s;
            unsigned long long n;
            cin>>s>>n;
            if(s=="x-y")
                cout<<3*n<<' '<<2*n<<' '<<n<<endl;
            if(s=="y-z")
                cout<<3*n<<' '<<2*n<<' '<<n<<endl;
            if(s=="x-z")
                cout<<3*n/2<<' '<<2*n/2<<' '<<n/2<<endl;
        }
        return 0;
    }
    
    • 1

    信息

    ID
    6448
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者