zoukankan      html  css  js  c++  java
  • 分火腿

    假设把所有香肠接在一起想象成一根大香肠 总长度为 (A)

    那不难想到,需要切(m-1)刀,则每隔(frac{A}{m})要切一刀,设(y=frac{A}{m})

    设原来一根香肠长度为(x)(x=frac{A}{n})(x)的倍数不用切,不能算在答案里

    所以现在问题变成(m-1)减去 (x)的倍数和(y)的倍数重合的个数

    (1)(A)的正整数中,有多少数既是 (x) 的倍数,也是(y)的倍数.

    很明显是(A)除以(x)(y)的最大公倍数

    下面是数学处理,根据定理:最大公倍数等于:

    [frac{x*y}{gcd(x,y)} ]

    其中 (gcd(x,y))(x)(y)最大公因子

    代入(x)(y)的值

    [frac{frac{A^2}{n*m}}{gcd(frac{A}{n},frac{A}{m})} ]

    上下同乘以(frac{n*m}{A})

    [frac {A}{gcd(n,m)} ]

    再用(A)除以最大公倍数

    就是(gcd(n,m))

    结果就是(m-1-gcd(n,m))

    但是(A)也是(x)(y)的倍数,最后一个位置(A)是不需要切的,所以上式子减多了一个,加上(1)

    结果:

    [m-gcd(n,m) ]

  • 相关阅读:
    梯度消失和梯度爆炸
    BN的作用与使用过程
    百面机器学习笔记(二)
    正则表达式
    CSS Sprite
    事件绑定
    拖拽
    oncontextmenu
    鼠标跟随
    鼠标事件
  • 原文地址:https://www.cnblogs.com/smallocean/p/12463258.html
Copyright © 2011-2022 走看看