[语言月赛 202407] true 的题解
记住只在没有思路时使用题解,不要从它复制粘贴代码。请尊重题目和题解的作者。
在解题之前提交题解的代码会导致封禁。
在解题之前提交题解的代码会导致封禁。
作者:
概述
本题要求根据看到的第一个、第二个属性的值(分别被放大了 倍和缩小了
倍),求出三个属性的真实值,且三者之和正好为
。核心解法是先由放大/缩小关系还原前两个属性的真实值,再用总和
减去它们得到第三个属性。
分析
核心观察
第一个属性被放大了 倍,所以看到的
是真实值的
倍,真实值为
;第二个属性被缩小了
倍,所以看到的
是真实值的
,真实值为
;第三个属性由总和
减去前两者得到。
思路
设三个真实属性分别为 。由题意:
代入 可得:
数据范围保证 是
的倍数,因此
均为整数。
具体示例
以样例 为例:
,
,则
,
,
,输出
、
、
,与样例一致。
算法步骤
- 读入两个整数
a、b。 - 计算第一个真实属性
x为。
- 计算第二个真实属性
y为。
- 计算第三个真实属性
z为。
- 依次输出
x、y、z。
复杂度分析
时间:
空间:
实现注意事项
保证是
的倍数,
一定为整数,可直接使用整数除法。
- 所有数值均在 int 范围内:
、
,且题目保证结果没有负数。
- 输出顺序为第一个、第二个、第三个属性,注意与题意顺序一致。
源代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
int x = a / 10;
int y = b * 10;
int z = 10000 - x - y;
cout << x << ' ' << y << ' ' << z << '\n';
return 0;
}
a, b = map(int, input().split())
x = a // 10
y = b * 10
z = 10000 - x - y
print(x, y, z)
评论