2 条题解

  • 0
    @ 2026-7-20 1:41:57

    P4057 [Code+#1] 晨跑——题解

    解题思路

    同时晨跑的天数必须同时是 a,b,ca,b,c 的倍数,最早的正天数就是三者最小公倍数。先求两个数的最小公倍数,再与第三个数求最小公倍数。使用 a/gcd(a,b)*b 降低中间乘积溢出风险。

    复杂度分析

    求最大公约数的时间复杂度为 O(logV)O(\log V),空间 O(1)O(1)

    C++17 参考代码

    #include <bits/stdc++.h>
    using namespace std;
    long long lcm2(long long a,long long b){return a/gcd(a,b)*b;}
    int main(){long long a,b,c;cin>>a>>b>>c;cout<<lcm2(lcm2(a,b),c)<<'\n';return 0;}
    
    • 0
      @ 2026-7-20 1:41:57

      #include <bits/stdc++.h> using namespace std; long long lcm2(long long a,long long b){return a/gcd(a,b)*b;} int main(){long long a,b,c;cin>>a>>b>>c;cout<<lcm2(lcm2(a,b),c)<<'\n';return 0;}

      • 1

      信息

      ID
      4904
      时间
      2000ms
      内存
      256MiB
      难度
      10
      标签
      递交数
      1
      已通过
      0
      上传者