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.

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

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.