QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#767989 | #9622. 有限小数 | Heenpei | WA | 203ms | 3624kb | C++17 | 2.3kb | 2024-11-20 23:15:20 | 2024-11-20 23:15:21 |
Judging History
answer
#include<bits/stdc++.h>
#include<map>
#include<queue>
#include<set>
#include<vector>
#define int long long
#define ull unsigned long long
#define endl '\n'
#define all(s) s.begin(),s.end()
#define xx first
#define yy second
#define inf 0x3f3f3f3f3f3f3f3f
#define N 1000005
#define mod 1000000007//998244353
#define double long double
#define lowbit(x) ((x)&(-x))
//#define ll long long
#define ls(x) (x<<1)
#define rs(x) ((x<<1)|1)
#define pll pair<int,int>
#define __lcm(a,b) (a/__gcd(a,b)*b)
const double pi=acos(-1);
const int P=233333;
const int PP=1313131;
const int mod1=1000001011;
const int mod2=(1ll<<31)-1;
using namespace std;
int qmi(int b,int k)
{
int ans=1;
while(k)
{
if(k&1) ans*=b;
b*=b,k>>=1;
}
return ans;
}
vector<int> v;
void init(int n)
{
//int cnt=0;
for(int i=0;i<=31;i++)
{
for(int j=0;j<=n&&qmi(2,i)*qmi(5,j)<=n;j++)
{
int x=qmi(2,i)*qmi(5,j);
v.push_back(x);
//cout<<++cnt<<" "<<qmi(2,i)*qmi(5,j)<<endl;
}
}
sort(all(v));
}
bool check(int x)
{
while(x%2==0) x/=2;
while(x%5==0) x/=5;
return x==1;
}
bool query(int a,int b,int c,int d)
{
int n=b*d;
a*=d,c*=b;
int m=a+c;
int g=__gcd(n,m);
n/=g,m/=g;
if(check(n)) cout<<m<<" "<<n<<endl;
return check(n);
}
int arr[N];
void solve()
{
int a,b;cin>>a>>b;
/*for(int i=1;i<=10000000;i++)
{
if(query(a,b,1,i))
{
cout<<i<<endl;
return ;
}
}*/
int ans=b-a,id=b;
for(auto i:v)
{
if(i==12800000)
{
cout<<"";
}
int g=__gcd(b,i);
int y=a*i;
int up=ceil((double)y/b*g)*b/g,down=i*b;
int now=up-y;
g=__gcd(now,down);
now/=g;
if(now<=ans&&down/g<=1e9)
{
if(ans==now) id=min(id,down/g);
else
{
ans=now;
id=down/g;
}
//if(now==1) cout<<id<<endl;
}
}
cout<<ans<<" "<<id<<endl;
}
void gettest(int t,int T)
{
for(int i=1;i<=T;i++)
{
int a,b;cin>>a>>b;
if(i==t)
{
cout<<a<<" "<<b<<endl;
return ;
}
}
}
signed main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int T=1;
cin>>T;
init(1000000000);
if(T==-1)
{
gettest(321,T);
return 0;
}
while(T--)
{
solve();
//cout<<"&\n";
}
return 0;
}
/*
4
1 2
2 3
3 7
19 79
5
28 53
17 60
2 35
17 181
179 182
1
79 163
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3616kb
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: 0
Accepted
time: 162ms
memory: 3600kb
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 12 1 54272 1 150 1 350 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 1 192 3 347500 1 944 1 43600 1 76 1 430000 1 633...
result:
ok 10000 case(s)
Test #3:
score: -100
Wrong Answer
time: 203ms
memory: 3624kb
input:
10000 649 915 163 504 53 235 130 131 109 475 214 757 719 788 479 975 515 811 367 972 69 221 21 44 53 157 77 398 227 332 38 87 145 976 396 403 203 381 675 838 157 309 827 962 17 56 455 654 377 809 605 908 907 929 631 978 286 621 289 462 425 428 139 144 259 368 623 642 767 773 32 281 235 624 88 871 39...
output:
1 11712 1 630 1 192512 1 131 1 95 9 19379200 1 15760 7 9750 33 129760000 1 199065600 1 3536 1 44 2 98125 9 31840 1 66400 1 1392 1 9994240 4 31484375 1 243840 9 838000 1 98880000 3 4925440 1 112 1 10464000 17 2071040 1 2270000 4 2903125 7 1222500 31 79488 17 288750 1 107000 1 288 1 115 1 64200000 6 7...
result:
wrong answer Jury found better answer than participant's 7 < 9 (Testcase 5577)