QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#754908#9622. 有限小数D12EQDWA 48ms3892kbC++171.7kb2024-11-16 16:04:552024-11-16 16:04:55

Judging History

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

  • [2024-11-16 16:04:55]
  • 评测
  • 测评结果:WA
  • 用时:48ms
  • 内存:3892kb
  • [2024-11-16 16:04:55]
  • 提交

answer

#include <bits/stdc++.h>
#define min(a,b) (a > b ? b : a)
#define max(a,b) (a < b ? b : a)

#define YES (cout << "YES" << endl)
#define NO (cout << "NO" << endl)
#define all(x) (x).begin(), (x).end()
#define endl '\n'
#define mem(a,b) memset(a,b,sizeof(a))
#define rrep(a, b, c) for (a = b; a >= c; a--)
#define rep(a, b, c) for (a = b; a <= c; a++)
#define int long long
#define IOS ios::sync_with_stdio(0); cout.tie(0);

using namespace std;

typedef double db;
typedef pair<int,int> pii;
typedef array <int,3> a3;

const db eps = 1e-7;
const int inf = 2e10;
const int N = 200010;

// ax + by = gcd(a, b) 的解
void exgcd(int a,int b,int &x,int &y){
	if(!b){
		x = 1;
		y = 0;
		return;
	}

	exgcd(b, a % b, y, x);
	y -= (a / b) * x;
}

vector <int> p;

void init(){
    int i, j;

    rep(i,0,32){
        rep(j,0,40){
            double val = pow(2, i) * pow(5, j);
            if (val > 1e9) break;
            p.push_back(val);
        }
    }
}

void solve(){
    int a, b;
    cin >> a >> b;

    int ansc = inf;
    int ansd = inf;

    int b2 = b;
    while (b2 % 2 == 0) b2 /= 2;
    while (b2 % 5 == 0) b2 /= 5;

    int b3 = b / b2;

    for (int x : p){
        int val = a * x % b2;
        val = (b2 - val) % b2;

        int d = x * b2;
        int X,Y;

        exgcd(b3, b2, X, Y); 
        X = (X % b2 + b2) % b2;

        int c = X * val % b2;
        if (c < ansc){
            ansc = c;
            ansd = d;
        }
    }

    cout << ansc << ' ' << ansd << endl;
}

/*

4
1 2
2 3
3 7
19 79

*/

signed main(){
    cin.tie(0);
    init();

    int T = 1;
    cin >> T;

    while (T --){
        solve();
    }

}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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: 48ms
memory: 3892kb

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 15
1 7
1 231680000
23 60058593750
1 2203125000
3 2086400000
1 63360
0 1
1 61000
0 1
1 59570312500
1 10750
1 18500
1 1117187500
1 331250
1 11230468750
1 31
1 15
1 289600000
1 455000
1 17968750000
1 1265625
0 1
1 1484375
0 1
1 415
1 235937500
1 765000000
1 181250
1 2968750
1 4406250
...

result:

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