题目要求
这是一道翻译过来的题目,对英文版感兴趣的同学可以直接看原题。
https://www.luogu.com.cn/problem/P4956
思路分析
根据题意,我们可以获取到这些信息。
枚举范围:1 ~ x ~ 100
判断条件:k = (n / 364 - x) / 3 为正整数,这是由(7x + 21k)*52=n所推理得出
因为我们要求x要尽可能大,所以我们可以从100向下枚举x,符合条件的第一个x,k即为结果
AC代码
n = int(input())
for x in range(100, 0, -1):
if (n / 364 - x) / 3 > 0 and (n / 364 - x)%3 == 0:
print(x)
print('%.0f'%((n / 364 - x) / 3))
break
这道题中,我学习到了一种解题的小诀窍,当我们遇到求一个尽可能大的数时,可以从大往小枚举出。也可以通过枚举与之相反的数,当该数尽可能小时,我们所求数就是尽可能大的情况。下面这道题,可以很好说明该情况。