洛谷 B4355:[GESP202506 一级] 值日 ← 最小公倍数(三种方法)

【题目来源】
https://www.luogu.com.cn/problem/B4355

【题目描述】
小杨和小红是值日生,负责打扫教室。小杨每 m 天值日一次,小红每 n 天值日一次。今天他们两个一起值日,请问至少多少天后,他们会再次同一天值日?

【输入格式】
第一行,一个正整数 m,表示小杨的值日周期;
第二行,一个正整数 n,表示小红的值日周期。

【输出格式】
一行,一个整数,表示至少多少天后他们会再次同一天值日。

【输入样例】
4
6

【输出样例】
12

【数据范围】
对于所有测试点,保证 1≤m,n≤100。​​​​​​​

【算法分析】
典型的求“最小公倍数”的题目。

【算法代码一】

#include <bits/stdc++.h>
using namespace std;

int main() {
    int m,n,t=1;
    cin>>m>>n;
    while(1) {
        if(t%m==0 && t%n==0) {
            cout<<t;
            break;
        }
        t++;
    }
    return 0;
}

/*
in:4 6
out:12
*/

【算法代码二】

#include <bits/stdc++.h>
using namespace std;

int main() {
    int m,n;
    cin>>m>>n;
    cout<<m/__gcd(m,n)*n;

    return 0;
}

/*
in:4 6
out:12
*/

【算法代码三】

#include <bits/stdc++.h>
using namespace std;

int gcd(int a,int b) {
    if(b==0) return a;
    return gcd(b,a%b);
}

int main() {
    int m,n;
    cin>>m>>n;
    cout<<m/gcd(m,n)*n;

    return 0;
}

/*
in:4 6
out:12
*/





【参考文献】
https://www.luogu.com.cn/problem/solution/B4355





 

posted @ 2025-12-16 07:19  Triwa  阅读(12)  评论(0)    收藏  举报