首页  >  问答  >  正文

java - C语言算法题-韩信点兵 求解?


完全不知道怎么下手??

高洛峰高洛峰2743 天前684

全部回复(2)我来回复

  • 大家讲道理

    大家讲道理2017-04-18 10:55:25

    这个。。。不知道怎么说才好。。。

    设共有 n 个人,三人一排,五人一排,七人一排,看最后一排剩下 a, b, c 人
    不就是

    n % 3 = a
    n % 5 = b
    n % 7 = c

    下面不就很简单了么?
    方法 1: 暴力
    n 从 10 到 100 都试一下。这个不用我说了吧

    方法 2: 数学方法(解同余式-初等数经)

    例题:
    n % 3 = 2
    n % 5 = 4

    可以转化成什么呢?

    设 n / 3 = x 余 2, n / 5 = y 余 4
    ==> 3x + 2 = 5y + 4
    ==> 3x = 5y + 2
    x,y 在 自然数的最小解是 x = 4, y = 2
    ==> n 最小是 12
    3 和 5 的最小公倍数 = 15
    所以 n % 15 == 12

    三个的话,先算两个,再算第三个。

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:55:25

    雷雷

    回复
    0
  • 取消回复