QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#743097 | #9622. 有限小数 | lzx2017# | RE | 0ms | 0kb | C++20 | 1.3kb | 2024-11-13 18:13:29 | 2024-11-13 18:13:29 |
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pll pair<int,int>
#define lf float
const int P=998244353;
const int MX=1e12;
int gcd(int a,int b){
int t;
while(b){
t=b;
b=a%b;
a=t;
}
return a;
}
int T[50][50]={0};
int K[10000],tk=0;
void solve(){
int a,b;
cin>>a>>b;
int x=b,A=1;
while(x%2==0)x/=2,A*=2;
while(x%5==0)x/=5,A*=5;
a%=x;
int minc=1e10,mind=1e9;
for(int i=1;i<=tk;i++){
int c=(x-K[i]%x*a%x)%x;
int d=K[i]*x*A;
int g=gcd(c,d);
c/=g,d/=g;
if(d<=1e9&&c<minc){
minc=c;
mind=d;
}
}
cout<<minc<<" "<<mind<<'\n';
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
T[0][0]=1;
for(int i=0;i<50;i++){
for(int j=0;j<50;j++){
if(T[i][j]>MX)break;
T[i+1][j]=T[i][j]*2;
T[i][j+1]=T[i][j]*5;
}
}
for(int i=0;i<50;i++){
for(int j=0;j<50;j++){
if(T[i][j]>MX)break;
if(T[i][j]==0)break;
K[++tk]=T[i][j];
}
}
//for(int i=1;i<=tk;i++)cout<<K[i]<<'\n';
int t=1;
cin>>t;
while(t--)
solve();
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Runtime Error
input:
4 1 2 2 3 3 7 19 79