QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#782838#9622. 有限小数Yoshinow2001WA 36ms3676kbC++201.3kb2024-11-25 21:46:292024-11-25 21:46:33

Judging History

This is the latest submission verdict.

  • [2024-11-25 21:46:33]
  • Judged
  • Verdict: WA
  • Time: 36ms
  • Memory: 3676kb
  • [2024-11-25 21:46:29]
  • Submitted

answer

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define endl '\n'
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
using namespace std;
typedef long long ll;
constexpr int INF=std::numeric_limits<int>::max();
constexpr int M=1e9;
ll exgcd(ll a,ll b,ll &x,ll &y){
    if(!b){x=1;y=0;return a;}
    ll d=exgcd(b,a%b,y,x);
    y-=a/b*x;
    return d;
}
int main(){
    fastio;
    int tc;
    cin>>tc;
    while(tc--){
        int a,b;
        cin>>a>>b;
        pair<int,int> ans={INF,INF};
        int qb=1,w=b;
        while(w%2==0){
            w/=2;
            qb*=2;
        }
        while(w%5==0){
            w/=5;
            qb*=5;
        }
        for(int x=0,v2=1;x<30;x++,v2<<=1){
            for(int y=0,v5=1;y<13;y++,v5*=5){
                if((__int128)v2*v5*w>M)break;
                long long d=v2*v5*w;
                long long q=qb*v2*v5;
                long long c,p;
                long long g=exgcd((ll)q*b,(ll)b*d,c,p);
                g=abs(g);
                if((ll)q*a*d%g)continue;
                c=-(ll)q*a*d/g*c;
                long long del=b*d/g;
                c=(c%del+del)%del;
                ans=min(ans,{c,d});
            }
        }
        cout<<ans.first<<' '<<ans.second<<endl;
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

4
1 2
2 3
3 7
19 79

output:

0 1
1 3
1 14
3 316

result:

ok 4 case(s)

Test #2:

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

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 54272
1 6
1 7
1 231680000
23 3936
1 36096000
5 326
1 63360
0 1
1 31232
0 1
1 4880
1 10750
1 18500
1 11714560
1 331250
1 2944
1 31
1 6
1 289600000
1 455000
1 58880
1 51840
0 1
1 304
0 1
1 415
1 19328000
1 765000000
1 4640
1 608
1 72192
3 775
0 384000000
3 347500
1 944
1 43600
1 76
1 430000
1 63...

result:

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