QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#770122#9622. 有限小数k1nsom#WA 1ms3540kbC++20981b2024-11-21 20:45:092024-11-21 20:45:09

Judging History

你现在查看的是最新测评结果

  • [2024-11-21 20:45:09]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3540kb
  • [2024-11-21 20:45:09]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;
#define endl '\n'
#define int long long

void solve()
{
    int a, b;
    cin >> a >> b;
    const int up = 1e18;
    pair<int, int> ans = {up, up};
    for (int i = 1; i <= up; i *= 2)
    {
        for (int j = 1; i * j <= up; j *= 5)
        {
            int d = b * i * j;
            if (d > up)
                break;
            // c = kb - a * 2 ^ i * 5 ^ j
            // k >= (a * i * j + b - 1) / b
            int v = a * i * j;
            int k = (v + b - 1) / b;
            int tmp1 = k * b - v, tmp2 = d;
            int gd = __gcd(tmp1, tmp2);
            if (tmp2 / gd <= 1e9)
                ans = min(ans, {tmp1 / gd, tmp2 / gd});
        }
    }
    auto [c, d] = ans;
    cout << c << ' ' << d << endl;
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int T = 1;
    cin >> T;
    while (T--)
    {
        solve();
    }

    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3540kb

input:

4
1 2
2 3
3 7
19 79

output:

0 1
1 3
1 14
1 -126100789566373888

result:

wrong answer Integer -126100789566373888 violates the range [1, 10^9]