康纳的表情包(思维)
生活随笔
收集整理的這篇文章主要介紹了
康纳的表情包(思维)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
UMR 現在手里有 n 張康納的表情,最上面一張是瑪吉呀巴庫乃。現在 UMR 如果每次把最上面的 m 張牌移到最下面而不改變他們的順序及朝向,那么至少經過多少次移動瑪吉呀巴庫乃才會又出現在最上面呢?
Input
多組輸入。
對于每組數據,輸入以空格分隔的兩個整數 n 和 m (1 <= n, m <= 10^9)。
Output
對于每組數據,輸出一個整數,表示至少移動的次數。
Sample Input
54 12Sample Output
9解題思路:當時這道題在組隊賽中是我看的,碰巧之前有一個同學問過我一個約瑟夫環的問題我就把這道題當做了類似約瑟夫環的問題,用隊列寫了一發,時間超限,看了看數據量10^9,覺得這可能是一道找規律的題目,于是想了想,找到了這樣一個規律。想讓這一張紙牌再次出現在最上面我們需要移動的總的牌數一定是紙牌數的倍數,也一定是每次移動牌數的倍數,于是求兩者的最小公倍數就一定是最少的移動總牌數,再用移動的總牌數除以每次移動的牌數,就可以得到最少的移動次數。
這里需要用到一個公式:lcm(n,m)*gcd(n,m)=n*m所以 lcm(n,m) = (n*m)/gcd(n,m)
counts = lcm(n,m)/m
最后整理得到
counts = n/gcd(n,m)
1 #include<algorithm> 2 #include<cstdio> 3 using namespace std; 4 int main() 5 { 6 int n,m; 7 while(~scanf("%d%d",&n,&m)) 8 printf("%d\n", m/__gcd(n,m)); 9 return 0; 10 }
?
?轉載于:https://www.cnblogs.com/wkfvawl/p/9350662.html
總結
以上是生活随笔為你收集整理的康纳的表情包(思维)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python | 实现pdf文件分页
- 下一篇: USB接口和雷电接口有什么关系?