描述 小明和小凯在玩游戏。小明告诉小凯一个数 n,并说: 请你打乱这个数的数字,以得到最小的可能数,但不能有前导零。小凯说:没问题!并立刻给出了一个答案。 小明说的是一个随机数,所以她不知道小凯的答案是否正确。请帮助她找到答案。 输入描述 第一行是给定的数 n ( 0≤n≤10 9 )。 第二行是小凯的答案。 输出描述 如果答案正确,输出“OK”;否则输出“WRONG_ANSWER”。 样例输入 1 3310 1033 样例输出 1 OK 样例输入 2 4 5 样例输出 2 WRONG_ANSWER
时间: 2024-03-25 20:37:19 浏览: 8
这道题目可以根据上一个问题的贪心算法来解决。具体来说,我们先将小凯给出的答案按照字符大小排序,然后与小明给出的数按照同样的规则排序后比较。如果两者相等,则说明小凯的答案是正确的,输出 OK;否则输出 WRONG_ANSWER。
下面是一个示例代码实现:
```python
def get_minimum_number(n):
s = str(n)
s = sorted(s)
if s[0] == '0':
for i in range(1, len(s)):
if s[i] != '0':
s[0], s[i] = s[i], s[0]
break
return int(''.join(s))
n = int(input())
ans = input().strip()
if get_minimum_number(n) == int(ans):
print("OK")
else:
print("WRONG_ANSWER")
```
例如,如果输入为:
```
3310
1033
```
则根据上面的算法,小明给出的数的最小可能数是 1033,与小凯的答案相等,因此输出 OK。如果输入为:
```
4
5
```
则小明给出的数已经是最小数,其结果为 4,与小凯的答案不相等,因此输出 WRONG_ANSWER。
相关问题
小明和小凯在玩游戏。小明告诉小凯一个数 n,并说: 请你打乱这个数的数字,以得到最小的可能数,但不能有前导零。小凯说:没问题!并立刻给出了一个答案。 小明说的是一个随机数,所以她不知道小凯的答案是否正确。
这是一个经典的贪心算法问题。要得到最小的可能数,我们需要将数位从小到大排序,但要注意不能有前导零。具体来说,我们可以将这个数转化为字符串,然后按照字符大小排序,最后再将排序后的字符串转化为数字即可。如果排序后的字符串开头是 0,则需要找到第一个非零字符,并将其与开头的 0 交换位置。这样得到的就是最小的可能数。
下面是一个示例代码实现:
```python
def get_minimum_number(n):
s = str(n)
s = sorted(s)
if s[0] == '0':
for i in range(1, len(s)):
if s[i] != '0':
s[0], s[i] = s[i], s[0]
break
return int(''.join(s))
```
例如,如果小明告诉小凯的数是 102345,那么根据上面的算法,小凯给出的答案应该是 102345 的数字排序结果 012345,然后交换第一个非零字符和开头的 0,得到最终答案 012345。
小明和小凯在玩游戏。小明告诉小凯一个数 n,并说: 请你打乱这个数的数字,以得到最小的可能数,但不能有前导零。小凯说:没问题!并立刻给出了一个答案。 小明说的是一个随机数,所以她不知道小凯的答案是否正确。请帮助她找到答案。
如果 n 是一个一位数,那么这个数已经是最小的了,所以答案就是 n 本身。如果 n 是一个两位数,那么可以通过将十位上的数字和个位上的数字交换来得到最小的数。如果 n 是一个三位数,那么可以先将百位上的数字和十位上的数字交换,然后再将十位上的数字和个位上的数字交换,这样可以得到最小的数。如果 n 是一个四位数或更多位数,那么可以将这个数的所有数字按照从小到大的顺序排列,得到的就是最小的数。
举个例子,如果 n 是 231,那么可以将十位上的数字和个位上的数字交换,得到 213,这是最小的可能数。