题解 P7578 【「RdOI R2」数(number)】

· · 题解

签到题。

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

因此题目可以简化为:

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

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

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

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

b$ 是一个整数,所以最后就是要 $ba-1$ “整除” $a+1

显然 a+1 \ge ba-1

那么 (b-1)a \le 2

因为 $1<a<b\times a-1$,所以如果 $b=1$ , 那么则有 $1<a<a-1$,矛盾。 所以 $b$ 只能是 $2$ ,于是转化为一个 $2a-1$“整除”$a+1$。 注意 $2a-1$ 除以 $a+1$ 的值不可能大于等于 $2$,所以 $2a-1=a+1$,解出 $a = 2$。 于是最后得到的比例就是:$1:2:3$。 也就是 $b \times a = 1 = 2 \times 2 - 1 = 3$。 代码如下: ```cpp #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; } ```