結果

問題 No.752 mod数列
コンテスト
ユーザー 梧桐
提出日時 2026-01-23 01:20:19
言語 C++17
(gcc 15.2.0 + boost 1.89.0)
結果
TLE  
実行時間 -
コード長 1,279 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 539 ms
コンパイル使用メモリ 81,156 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2026-01-23 01:20:26
合計ジャッジ時間 6,501 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample -- * 3
other AC * 16 TLE * 1 -- * 14
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <iostream>

using namespace std;

typedef long long LL;

int p, q, l, r;
LL ans;

int main() {
    // freopen("mod.in", "r", stdin);
    // freopen("mod.out", "w", stdout);

    scanf("%d%d", &p, &q);
    while (q--) {
        scanf("%d%d", &l, &r);
        ans = 0LL;
        if (r > p) {
            if (l > p) {
                ans = 1LL * p * (r - l + 1);
                printf("%lld\n", ans);
                continue;
            } else {
                ans += 1LL * p * (r - p);
                r = p;
            }
        }
        int cr = r;
        while (true) {
            bool flag = false;
            int x = p / cr;
            int v1 = p % cr;
            int cl = (p + x) / (x + 1);
            int v2 = p % cl;
            if (cl == 1) break;
            if (v2 == 0) {
                ++cl;
                v2 = p % cl;
                flag = true;
            }
            if (cl > l) {
                ans += 1LL * (v1 + v2) * (cr - cl + 1) / 2;
                cr = cl - 1;
                if (flag) --cr;
            } else {
                cl = l;
                v2 = p % cl;
                ans += 1LL * (v1 + v2) * (cr - cl + 1) / 2;
                break;
            }
        }
        printf("%lld\n", ans);
    }

    return 0;
}
0