当前位置:   article > 正文

备战蓝桥杯Day34 - 每日一题

备战蓝桥杯Day34 - 每日一题

题目描述

 解题思路

1.输入数据n,并将字符串类型转换成整数类型

2.求出输入n是2的几次幂(调用math库中的求对数的方法),在下面的循环中要用到

3.定义sum和,将抽取到的牌的总数加起来存储

4.count =0 # 记录 2 的第几次幂

5。通过循环,计算所有抽取到的牌数的总和,并得出抽到第几轮了,将输入数值减去已经加和的数值。

6.对所有的情况进行判断,并输出谁是最后抽牌的,谁就是最后的赢家。

代码实现

  1. import math
  2. n = int(input()) # 输入数据
  3. num = round(math.log2(n)) # 求出输入n是2的几次幂,在下面的循环中要用到
  4. sum = 0 # 定义sum和,将抽取到的牌的总数加起来存储
  5. count =0 # 记录 2 的第几次幂
  6. for exp in range(num): # 循环输入数据n有的几个2次幂
  7. i = 2 ** exp # 计算二次幂 1.2.4.8.16...
  8. sum += i # 将所有的数据加和 就是 1+2+4+8+16+...
  9. count += 1
  10. res = n - sum # 计算输入数据n减去所有2次幂的和,剩下的数值
  11. # print(sum)
  12. # print(count) # 这些都是中间打印出来查看结果方便写出后续代码的
  13. # print(res)
  14. # print(count % 2)
  15. if res <= 0 and count % 2 == 0: # 剩下的这些就是情况列举,你自己算算应该可以看懂
  16. print('hua')
  17. elif res <= 0 and count % 2 == 1:
  18. print('ming')
  19. elif res > 0 and count % 2 == 0:
  20. print('ming')
  21. else:
  22. print('hua')

总结

是我自己思考想出来的,算法的时间复杂度和解法可能不是最优的,这个题目也算是比较简单的,我最近做蓝桥杯的真题真的有点做不动了,都好难,感觉到最后都是数学问题,你需要根据给出的条件和给出的数据自己提取出数学模型来,对于我这种数学不好的人真的是非常不友好啊啊~但是我看了很多人说其实多刷题多总结题型会有帮助,我还是练习不够,需要再多加思考!多加练习!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/330033
推荐阅读
相关标签
  

闽ICP备14008679号