P4956 [COCI2017-2018#6] Davor python

文章讲述了如何在编程问题中利用枚举和解题技巧求解一个尽可能大的数,通过实例演示了如何从大到小枚举以及反向枚举的方法,以解决一道关于整数分解的问题。
摘要由CSDN通过智能技术生成

 题目要求

这是一道翻译过来的题目,对英文版感兴趣的同学可以直接看原题。

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

这道题中,我学习到了一种解题的小诀窍,当我们遇到求一个尽可能大的数时,可以从大往小枚举出。也可以通过枚举与之相反的数,当该数尽可能小时,我们所求数就是尽可能大的情况。下面这道题,可以很好说明该情况。

https://www.luogu.com.cn/problem/P1075

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值