QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#737159#9622. 有限小数nekohshizukuWA 46ms67372kbC++202.1kb2024-11-12 14:51:162024-11-12 14:51:16

Judging History

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

  • [2024-11-12 14:51:16]
  • 评测
  • 测评结果:WA
  • 用时:46ms
  • 内存:67372kb
  • [2024-11-12 14:51:16]
  • 提交

answer

#include<iostream>
#include<string>
#include<cmath>
#include<algorithm>
#include<iomanip>
#include<stack>
#include<unordered_map>
#include<map>
#include<set>
#include<cstring>
#include<vector>
#include<numeric>
#include<queue>
#define Arr arr
#define null NULL
#define Endl endl
#define db double
#define pll pair<ll,ll>
#define vpll vector<pair<ll,ll> >
#define vll vector<ll>
#define vvpll vector<vector<pair<ll,ll> > >
#define vvll vector<vector<ll> >
#define privll priority_queue<ll, vector<ll> ,greater<ll> >
#define privpll priority_queue<pair<ll, ll>, vector<pair<ll,ll> > ,greater<pair<ll,ll> > >
#define ll long long
#define amonglr(x,l,r) x >= l && x <= r
#define rep(i,s,n) for(ll i = (s);i <= (n);i++)
#define per(i,s,n) for(ll i = (s);i >= (n);i--)
using namespace std;

const ll N = 2e6 + 10;
ll mod = 1e9 + 7, inf = 1e17;
string str, stt, stl[N];
ll m, t, k, n, num[N], arr[N];

ll qpow(ll a, ll b) {
    ll res = 1;
    while (b) {
        if (b & 1) res = res * a;
        a = a * a;
        b >>= 1;
    }
    return res;
}

ll gcd(ll a, ll b) {
    return !b ? a : gcd(b, a % b);
}

void solve() {
    ll a, b;
    cin >> a >> b;
    ll temp = b, ans = 1e12, ans1 = 1e12;
    while (temp % 2 == 0) temp /= 2;
    while (temp % 5 == 0) temp /= 5;
    if (temp == 1) {
        cout << 0 << " " << 1 << Endl;
        return;
    }
    ll q1 = 1;
    for (int i = 0;; i++) {
        ll res = q1 * b, res1 = q1 * a;
        q1 = q1 * 2;
        if (res > 1e9) break;
        for (int j = 0;; j++) {
            res = res * 5;
            res1 = res1 * 5;
            if (res > 1e9) break;
            ll temp1 = res1 / temp * temp + temp - res1;
            ll gcd1 = gcd(temp1, res);
            ll temp2 = res / gcd1;
            temp1 /= gcd1;
            if (temp1 < ans) {
                ans = temp1;
                ans1 = temp2;
            }
        }
    }
    cout << ans << " " << ans1 << endl;
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    t = 1;
    cin >> t;
    while (t--) solve();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 8ms
memory: 66420kb

input:

4
1 2
2 3
3 7
19 79

output:

0 1
1 75
1 4375
3 316

result:

ok 4 case(s)

Test #2:

score: -100
Wrong Answer
time: 46ms
memory: 67372kb

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 30
1 828125000
1 150
1 109375
1 231680000
23 960937500
1 36096000
5 326
1 63360
0 1
1 61000
0 1
1 4880
1 10750
1 18500
1 11714560
1 331250
1 898437500
1 31
1 15
1 289600000
1 455000
1 115000000
1 1265625
0 1
1 1484375
0 1
1 415
1 235937500
1 765000000
1 181250
1 2968750
1 4406250
3 775
1 480
3 347...

result:

wrong answer Jury found better answer than participant's 1 < 2 (Testcase 394)