Hướng dẫn giải của Bedao Regular Contest 17 - Dãy bội
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nhận xét: Ta có thể dùng thừa số nguyên tố để làm phần thương của 2 số kề nhau trong dãy
Đặt ~n = R / L~. Phân tích ~n~ ra các thừa số nguyên tố, giả sử: ~12 = 2 * 3 * 3~.
Code mẫu
#include<bits/stdc++.h> #define int long long #define pb push_back #define fi first #define se second using namespace std; using ll = long long; using ld = long double; using ull = unsigned long long; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int maxN = 1e6 + 5; const int mod = 1e9 + 7; const ll oo = 1e18; int L, R; void ReadInput() { cin >> L >> R; } void Solve() { R /= L; int res = 0; int i = 2; while(i * i <= R) { if(R % i == 0) { R /= i; res++; } else i++; } res += (R > 1); cout << res + 1; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); ReadInput(); Solve(); }
Bình luận