B4237 [海淀区小学组 2025] 硬币重量
欢迎报名洛谷网校,期待和大家一起进步!
本题考察字符串。
如果读入的不等式中有大于的也有小于的会比较复杂,因此我们应当先把不等号的方向统一。我们这里不妨都统一成大于号。
接着考虑三个砝码重量的相对大小。我们不妨考虑以下三个情况:
A>B
A>C
B>C
和
A>B
B>C
C>A
和
A>B
A>C
A>B
第一种情况是可以推断出相对重量大小:C<B<A。第二种情况会出现矛盾(A 大于 B,B 大于 C,理论上 A 要大于 C,但是测出了 C 大于 A,因此是矛盾的)。第三种情况无法推断出 B 和 C 的相对重量大小。
更进一步地说,能够推断出相对大小的形式只有以下三种(假设最重的是 A):
A>B
A>C
B>C
或
A>B
B>C
A>C
或
A>B
A>C
B>C
分成三种情况,分别判断即可。不属于三种情况的,判断为矛盾。
参考代码(只展示关键部分):
cin >> a >> b >> c;
if (a[1] == '<') swap(a[0], a[2]);
if (b[1] == '<') swap(b[0], b[2]);
if (c[1] == '<') swap(c[0], c[2]);
if (a[0] == b[0]) cout << c[2] << c[0] << a[0] << endl;
else if (b[0] == c[0]) cout << a[2] << a[0] << b[0] << endl;
else if (a[0] == c[0]) cout << b[2] << b[0] << c[0] << endl;
else cout << "Impossible" << endl;