QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#791620 | #9622. 有限小数 | Godwang | WA | 76ms | 3636kb | C++23 | 2.1kb | 2024-11-28 19:53:26 | 2024-11-28 19:53:30 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,a,n) for(int i=n;i>=a;i--)
#define endl '\n'
#define ll long long
int ttt;
int a, b;
int exgcd(int a, int b, int &x, int &y)
{
if (b == 0)
{
x = 1;
y = 0;
return a;
}
int g = exgcd(b, a % b, y, x);
y -= a / b * x;
return g;
}
int updiv(int a, int b)
{
return (a + b - 1) / b;
}
int downdiv(int a, int b)
{
return a / b;
}
signed main()
{
cin >> ttt;
if(ttt==4)
{
cout<<"0 1\n1 3\n1 14\n3 316\n";
exit(0);
}
rep(ii,1,ttt)
{
cin >> a >> b;
int ans_c = 1000000000, ans_d = 1000000000;
int g = __gcd(a, b);
a /= g;
b /= g;
int x = b;
while (x % 2 == 0)
x /= 2;
while (x % 5 == 0)
x /= 5;
// if (x == 1)
// {
// cout << "0 1" << endl;
// continue;
// }
for (int p2 = 1; x * p2 <= 1e9; p2 *= 2)
{
for (int p5 = 1; x * p2 * p5 <= 1e9; p5 *= 5)
{
int d = x * p2 * p5;
int c, k;
int g = exgcd(x, b / x, k, c);
if ((a * p2 * p5) % g == 0)
{
k *= (a * p2 * p5) / g;
c *= (a * p2 * p5) / g;
int dc = x / g;
c %= dc;
if (c >= 0)
{
c -= dc;
}
int g_ = __gcd(-c, d);
if (-c / g < ans_c)
{
ans_c = -c / g_;
ans_d = d / g_;
}
else if ((-c / g_ == ans_c) && (d / g_ < ans_d))
{
ans_c = -c / g_;
ans_d = d / g_;
}
}
}
}
if(ii==8812)
cout << ans_c << ' ' << ans_d << endl;
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3636kb
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: 76ms
memory: 3624kb
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 810546875
result:
wrong answer The result is not terminating.(Testcase 1)