QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#746991#9622. 有限小数ganking#WA 36ms3712kbC++201.5kb2024-11-14 16:04:432024-11-14 16:04:45

Judging History

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

  • [2024-11-14 16:04:45]
  • 评测
  • 测评结果:WA
  • 用时:36ms
  • 内存:3712kb
  • [2024-11-14 16:04:43]
  • 提交

answer

#include<bits/stdc++.h>
#define fo(i,a,b) for (ll (i)=(a);(i)<=(b);(i)++)
#define pi pair<ll,ll>
#define ll long long 
#define db long double 
using namespace std;
const int N = 1e6 + 5;
const int mo = 998244353;
const ll inf = 1e18;
ll a, b, bb, cc, dd;
void work(ll x) {
    while (x % 2 == 0) x /= 2;
    while (x % 5 == 0) x /= 5;
    bb = x;
}
void exgcd(ll a, ll b, ll& d, ll& x, ll& y) {
    if (!b) {
        x = 1; y = 0; d = a; return;
    }
    exgcd(b, a % b, d, y, x);
    y -= (a / b) * x;
}
void check(ll d) {
    ll k0, c0, gcd, A, B, Y, u;
    A = bb * bb; B = b;  Y = a * d;

    exgcd(A, -B, gcd, k0, c0);

    // cout << k0 << " " << c0 << "\n";

    if (Y % gcd) return;

    c0 = -c0;
    gcd = abs(gcd);
    u = A / gcd;
    // k0 = k0 * (Y / gcd);
    c0 = c0 % u * (Y / gcd) % u;

    


    c0 = (c0 % u + u) % u;

    if (cc > c0) {
        cc = c0;
        dd = d;
    }

}
void solve() {
    cc = inf;
    cin >> a >> b;

    // a = 3; b = 7;
    work(b);

    ll p2 = 1, p5;
    fo(i, 0, 30) {
        p5 = 1;
        fo(j, 0, 15) {
            if (p2 * p5 > 1e9) break;
            if (p2 * p5 * bb > 1e9) break;

            check(bb * p2 * p5);
            p5 = p5 * 5;
            if (p5 > 1e9) break;
        }
        p2 = p2 * 2;
    }

    cout << cc << " " << dd << "\n";

}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);


    int T = 1;
    cin >> T;
    while (T--) solve();
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3712kb

input:

4
1 2
2 3
3 7
19 79

output:

0 1
1 3
1 4375
3 316

result:

ok 4 case(s)

Test #2:

score: -100
Wrong Answer
time: 36ms
memory: 3684kb

input:

10000
11 12
28 53
17 60
2 35
17 181
80 123
68 141
79 163
71 99
13 64
33 61
15 32
16 61
11 86
33 74
128 143
40 53
7 23
30 31
5 6
86 181
73 91
13 23
71 81
1 2
7 38
117 160
33 83
129 151
88 153
25 58
16 19
19 141
95 124
43 96
71 139
11 59
106 109
93 152
34 43
17 99
1 57
20 159
16 25
5 73
159 170
172 17...

output:

1 3
1 828125000
1 3
1 7
1 231680000
23 960937500
1 36096000
5 326
1 63360
0 1
1 61000
0 1
1 4880
1 344
1 2890625
1 11714560
1 331250
1 898437500
1 31
1 3
1 289600000
1 455000
1 115000000
1 1265625
0 1
1 4750
0 1
1 415
1 235937500
1 765000000
1 29000
1 2968750
1 4406250
3 775
1 15
3 347500
1 944
1 34...

result:

wrong answer The result is not terminating.(Testcase 3)