QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#743721#9622. 有限小数ATM12345WA 41ms3904kbC++171.3kb2024-11-13 19:52:522024-11-13 19:52:53

Judging History

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

  • [2024-11-13 19:52:53]
  • 评测
  • 测评结果:WA
  • 用时:41ms
  • 内存:3904kb
  • [2024-11-13 19:52:52]
  • 提交

answer

#include <bits/stdc++.h>
#define ll long long
#define LL long long
#define ls p<<1
#define rs p<<1|1
#define Ma 1000005
#define mod 1000000007
#define PLL pair<ll,ll>
#define PDD pair<double,double>
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fi first
#define se second
#define N 61
#define pb push_back
#define ld long double
#define all(x) x.begin(),x.end()
#define inf 1e9

using namespace std;



ll exgcd(ll a,ll b,ll &x,ll &y){
	if (!b)
	{
		x=1,y=0;
		return a;
	}
	ll d=exgcd(b,a%b,y,x);
	y-=a/b*x;
	return d;
}


ll pw;
vector <ll> v;
ll c,di;


ll lcm(ll x,ll y)
{
	return x*y/__gcd(x,y);
}



void go(ll a,ll b,ll d)
{
	ll lc=lcm(b,d);
	a*=lc/b;
	ll mul=lc/d;
	ll x,y;
	ll g=exgcd(pw,mul,x,y);// c=(pw*k-a)/mul
	if (a%g)
		return;
	y*=a/g;
	y=-y;
	y%=pw*mul/g;
	if (y<0)
		y+=pw*mul/g;
	//ll gc=__gcd(y,d);
	//y/=gc,d/=gc;
	//printf("c=%lld d=%lld\n",y,d);
	if (y<c)
		c=y,di=d;
}

void sol()
{
	ll a,b;
	cin>>a>>b;
	a%=b;
	pw=b;
	c=inf;
	while (pw%2==0)
		pw/=2;
	while (pw%5==0)
		pw/=5;
	for (ll i=1;pw*i<=inf;i*=2)
	{
		for (ll j=1;pw*i*j<=inf;j*=5)
		{
			go(a,b,pw*i*j);
		}
	}
	printf("%lld %lld\n",c,di);
	return;
}

int main()
{
	
	IOS
	ll tt=1;
	cin>>tt;
	while (tt--)
		sol();
	return 0;
}


/*

4
1 2
2 3
3 7
19 79

*/

详细

Test #1:

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

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: 41ms
memory: 3904kb

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 150
1 109375
1 231680000
23 960937500
1 36096000
5 326
1 63360
0 1
1 61000
0 1
1 4880
1 10750
1 18500
1 11714560
1 331250
1 898437500
1 31
1 15
1 289600000
1 455000
1 115000000
1 1265625
0 1
1 1484375
0 1
1 415
1 235937500
1 765000000
1 181250
1 2968750
1 4406250
3 24800
1 750
3 34...

result:

wrong answer Jury found better answer than participant's 2 < 3 (Testcase 391)