子曰:三人行,必有我师焉。择其善者而从之,其不善者而改之。
本题给定甲、乙、丙三个人的能力值关系为:甲的能力值确定是 2 位正整数;把甲的能力值的 2 个数字调换位置就是乙的能力值;甲乙两人能力差是丙的能力值的 X 倍;乙的能力值是丙的 Y 倍。请你指出谁比你强应从之
,谁比你弱应改之
。
输入在一行中给出三个正整数,依次为:M(你自己的能力值)、X 和 Y。
在一行中首先输出甲的能力值,随后依次输出甲、乙、丙三人与你的关系:如果其比你强,输出Cong
;平等则输出Ping
;比你弱则输出Gai
。其间以 1 个空格分隔,行首尾不得有多余空格。注意:如果解不唯一,则以甲的最大解为准进行判断;如果解不存在,则输出No Solution
。
由于甲只可能是两位整数,并且如果有多解时以甲的最大解为准进行判断,可以让甲从数字 99 到数字 10 进行枚举,按要求搜索出的第一个符合条件的甲即为所求,然后按要求进行输出即可。
丙不一定是整数,可以是浮点数,所以要定义成 double 类型。
#include <bits/stdc++.h>
using namespace std;
using gg = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
array<double, 3> p{};
gg mi, xi, yi;
cin >> mi >> xi >> yi;
for (gg i = 99; i >= 10; --i) {
gg j = i % 10 * 10 + i / 10;
p = {i * 1.0, j * 1.0, j * 1.0 / yi};
if (abs(p[2] - abs(i - j) * 1.0 / xi) < 1e-6) {
cout << p[0];
for (auto i : p) {
cout << ' ' << (i > mi ? "Cong" : i < mi ? "Gai" : "Ping");
}
return 0;
}
}
cout << "No Solution";
return 0;
}