2301_76917293 2023-04-04 00:28 采纳率: 0%
浏览 152

韩信点兵python

有一群士兵,火数不超过n。韩信将其按照一行3人排队,余2人:按照一行5人排队,余1火;按照一行7人排队,刚好排成若干行。编马程序 计算士兵的人数。
<提示:可以采用穷举法求解。当人数上限比较大时,会有多种结果,要求全列举出来〉

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2023-04-04 00:49
    关注
    n = int(input())
    for i in range(7,n+1,7):
        if i%3==2 and i%5==1:
            print(i)
    
    
    评论
  • threenewbee 2023-04-04 01:40
    关注

    题目说可以采用穷举法,但是没说一定要穷举,穷举是最笨的方法,这个问题可以直接解方程,代码如下

    def _remainder(n, a):
        assert len(n) == len(a)
        n_len = len(n)
        N = 1
        for i in range(n_len):
            N *= n[i]
        result = 0
        for i in range(n_len):
            m = N // n[i]
            result += a[i] * m * pow(m, -1, n[i])
        return result % N
    
    n = int(input("请输入士兵的最大人数 n:"))
    
    n_list = [3, 5, 7]
    a_list = [2, 1, 0]
    for i in range(3):
        n_cur = n_list[i]
        if n < n_cur:
            n_list = n_list[:i]
            a_list = a_list[:i]
            break
        a_list[i] %= n_cur
    
    soldiers = _remainder(n_list, a_list)
    print("士兵的人数为:", soldiers)
    
    
    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-04 03:25
    关注
    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/1091961
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:1.Python就是一个能够帮你实现需求的工具,它更像是一把万能钥匙,决定用它来打开哪一扇门的,是你自己。
    • 除此之外, 这篇博客: python作业中的 19.有n个人围成一圈,顺序排号。 从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • n = 34
      arr = list(range(1,n+1))            # 所有人门外站成一队【a】,进门后依旧按序站好【b】
      count,a,b = 0,arr,[]
      # 开始解题
      while len(a+b)>1:                   # 循环直到只剩1人
          num,count=a.pop(0),count+1      # 排队进门,每进一人【a.pop】,按一下计数器
          if count%3!=0:b.append(num)     # 进门后依旧按序站好【b.append】,计数器逢3淘汰。
          if a==[]:a,b=b,[]               # 如果门外没人了【a=[]】,所有人重新到门外站好【a=b】
      print(a[0])
      
      
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部