

Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
Ta cần tìm `x . y` sao cho `x . y` là bội của `m`.
Mà `x . y` cũng là bội của `x`.
Vậy ta cần tìm số bội chung của `x` và `m` sao cho `y <= n <=> x . y <= x . n`.
Độ phức tạp của thuật toán là O(logn).
$\\$
Code tham khảo:
#include <iostream>
#include <numeric>
#define ll long long
using namespace std;
int main() {
freopen("demso.inp", "r", stdin);
freopen("demso.out", "w", stdout);
ll x, n, m; cin >> x >> n >> m;
cout << x * n / lcm(x, m);
}
$\\$
$\\$
\begin{array}{c|c|c}\color{#ffd710}{\texttt{\{}} \color{#8655d6}{\texttt{\{}}\ \ \color{#8cdcda}{\text{Daoanhviet96}}\ \ \color{#8655d6}{\texttt{\}}} \color{#ffd710}{\texttt{\}}}\end{array}
Hãy giúp mọi người biết câu trả lời này thế nào?
![]()
Bảng tin
4332
2959
1966
trước h t cứ nghĩ trong c++ chỉ có mỗi gcd thôi
2901
47938
1864
std::lcm được bổ sung kể từ C++17 (giống bên Python, math.lcm được bổ sung kể từ Python3.9)