QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#867012 | #9622. 有限小数 | lmz20050701 | WA | 1ms | 3840kb | C++23 | 1.7kb | 2025-01-23 00:21:18 | 2025-01-23 00:21:18 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long
#define ll long long
#define ull unsigned long long
#define db double
#define P point
#define Fr(i,a,b) for(int i=a;i<=b;i++)
#define Fr_(i,a) for(auto i:a)
#define pb push_back
#define fastio ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define pii pair<int,int>
#define fir first
#define sec second
#define pq priority_queue
#define mkp make_pair
#define memset(a,b) memset(a,b,sizeof(a))
#define new_opt friend bool operator
#define endl '\n'
#define ok cout<<"ok"<<endl
using namespace std;
const int N=2e6+10;
const int N_=1e3+10;
const int M=998244353;
const int inf=2e9;
int n,m;
int f(int x)
{
int ans=1;
while(x%2==0)
{
ans*=2;
x/=2;
}
while(x%5==0)
{
ans*=5;
x/=5;
}
return ans;
}
int cala(int x,int y)
{
int ans=0;
while(x)
{
ans++;
x/=y;
}
return ans;
}
int check(int x,int y)
{
return y-x%y;
}
void slv()
{
int a,b;
cin>>a>>b;
int t=f(b);
b/=t;
if(b==1)
{
cout<<0<<' '<<1<<endl;
return ;
}
int l=cala(1e9,2);
int r=cala(1e9,5);
int c=inf;
int d=inf;
Fr(i,0,l)
{
Fr(j,0,r)
{
int tmp=pow(2,i)*pow(5,j);
if(tmp*t*b>1e9) break;
//cout<<tmp<<endl;
int tt=check(a*tmp,b);
if(tt<=c)
{
//cout<<c<<' '<<tt<<' '<<tmp<<endl;
c=tt;
d=min(d,tmp);
}
}
}
cout<<c<<' '<<d*t*b<<endl;
}
/*
4
1 2
2 3
3 7
19 79
*/
signed main()
{
fastio;
int o=1;
cin>>o;
while(o--) slv();
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3840kb
input:
4 1 2 2 3 3 7 19 79
output:
0 1 1 3 1 7 3 79
result:
wrong answer The result is not terminating.(Testcase 3)