QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#748909#9705. Multiplyrose_DKYAC ✓107ms5868kbC++202.6kb2024-11-14 21:55:542024-11-14 21:55:55

Judging History

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

  • [2024-11-14 21:55:55]
  • 评测
  • 测评结果:AC
  • 用时:107ms
  • 内存:5868kb
  • [2024-11-14 21:55:54]
  • 提交

answer

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
#define MAXN 200005
ll mul(ll a, ll b, ll m) {
	ll r = a * b - m * (ll)(1.L / m * a * b);
	return r - m * (r >= m) + m * (r < 0);
}
ll mypow(ll a, ll b, ll m) {
	ll res = 1 % m;
	for (; b; b >>= 1, a = mul(a, a, m)) {
		if (b & 1) {
			res = mul(res, a, m);
		}
	}
	return res;
}
ll B[] = {2, 3, 5, 7, 11, 13, 17, 19, 23};
bool MR(ll n) {
	if (n <= 1) return 0;
	for (ll p : B) {
		if (n == p) return 1;
		if (n % p == 0) return 0;
	}
	ll m = (n - 1) >> __builtin_ctz(n - 1);
	for (ll p : B) {
		ll t = m, a = mypow(p, m, n);
		while (t != n - 1 && a != 1 && a != n - 1) {
			a = mul(a, a, n);
			t *= 2;
		}
		if (a != n - 1 && t % 2 == 0) return 0;
	}
	return 1;
}
ll PR(ll n) {
	for (ll p : B) {
		if (n % p == 0) return p;
	}
	auto f = [&](ll x) -> ll {
		x = mul(x, x, n) + 1;
		return x >= n ? x - n : x;
	};
	ll x = 0, y = 0, tot = 0, p = 1, q, g;
	for (ll i = 0; (i & 255) || (g = __gcd(p, n)) == 1; i++, x = f(x), y = f(f(y))) {
		if (x == y) {
			x = tot++;
			y = f(x);
		}
		q = mul(p, abs(x - y), n);
		if (q) p = q;
	}
	
	return g;
}
vector<ll> fac(ll n) {
#define pb emplace_back
	if (n == 1) return {};
	if (MR(n)) return {n};
	ll d = PR(n);
	auto v1 = fac(d), v2 = fac(n / d);
	auto i1 = v1.begin(), i2 = v2.begin();
	vector<ll> ans;
	while (i1 != v1.end() || i2 != v2.end()) {
		if (i1 == v1.end()) {
			ans.pb(*i2++);
		} else if (i2 == v2.end()) {
			ans.pb(*i1++);
		} else {
			if (*i1 < *i2) {
				ans.pb(*i1++);
			} else {
				ans.pb(*i2++);
			}
		}
	}
	return ans;
}

ll a[MAXN];
ll c[MAXN];
void solve()
{
	
	ll n, x, y;
	cin >> n >> x >> y;
	
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	
	ll t = x;
	vector<ll> p = fac(t);
	sort(p.begin(), p.end());
	p.erase(unique(p.begin(), p.end()), p.end());
	
	for (int i = 0; i < p.size(); i++) {
		ll t = x, cnt = 0; 
		while (t % p[i] == 0) {
			cnt++;
			t /= p[i];
		}
		c[i] = cnt;
	}
	
	
	ll res = 1e18;
	for (int i = 0; i < p.size(); i++) {
		ll pp = p[i], cc = c[i];
		ll c1 = 0, c2 = 0;
		for (int j = 1; j <= n; j++) {
			ll t = a[j];
			while (t) {
				c1 += t / pp;
				t /= pp;
			}
		}
		
		ll t = y;
		while (t) {
			c2 += t / pp;
			t /= pp;
		}
		
		res = min(res, (c2 - c1) / cc);
	}
	
	cout << res << endl;
	
}
int main()
{
	
	
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	
	int t = 1;
	cin >> t;
	while (t--) {
		solve();
	}
	
	return 0;
}
/*
  2
  3 10 10
  2 3 4
  2 2 10
  1 1
 */


Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 5868kb

input:

2
3 10 10
2 3 4
2 2 10
1 1

output:

2
8

result:

ok 2 number(s): "2 8"

Test #2:

score: 0
Accepted
time: 2ms
memory: 3548kb

input:

8
929 98210021061137 164832982985885580
43576998167336 157303878397705 212661169553039 169068044677212 17733912750082 101059786177542 56528418806042 170741049344189 128297164019222 208810463591190 96264177952672 70816863413347 116985928070432 56330014332760 10006522486360 110959002803542 15298525649...

output:

1059
95837140
1761303730724
3810060773695
8961243000749
8657430203778550
2603387692898890
569502267311933

result:

ok 8 numbers

Test #3:

score: 0
Accepted
time: 92ms
memory: 5604kb

input:

8
92894 80454414905270281 520643152573491735
2064229122797 4223622787947 1054260245418 4094316313084 3929142530824 6452342289094 3762455615113 3157146960681 5603173442583 1875814573143 1801348242678 2409547278342 6854531398370 1240913563145 1848446319539 1493011800303 5389461335879 7286083232997 579...

output:

6
114168802
81596535601
11028882122096
100316204821427
4718268084920428
394167331265621
539500856199383

result:

ok 8 numbers

Test #4:

score: 0
Accepted
time: 107ms
memory: 4308kb

input:

8
92894 8280090210874177 543856067505017676
7628166265475 4448095856140 3732480525951 6624251584927 2217648228673 2129611741353 2848644172912 8103647146535 1467047865398 2185292600211 1765086497170 6371594269098 8613841584311 6848101874651 718312212561 4093427071182 2289683844966 6915866934586 51966...

output:

65
1246786758
333319010645
13129729242598
84397513456572
1419008292818811
145866895461700
594315405335288

result:

ok 8 numbers

Test #5:

score: 0
Accepted
time: 94ms
memory: 5848kb

input:

8
92894 98210021061137 164832982985885580
437808801937 1580398501813 2136561393792 1698590570197 178168838012 1015326106916 567928960914 1715398889850 1288974230710 2097874172186 967145654868 711481916793 1175332657008 565935634477 100533395596 1114781424652 1537010227806 201374141170 2002549530277 ...

output:

1678
15138363549
3851961323533
9546266194484
65456023237176
50284070499384881
2136489879131768
343921703953617

result:

ok 8 numbers

Test #6:

score: 0
Accepted
time: 2ms
memory: 5676kb

input:

8
929 904648320997198759 857077283552821319
576128640757999 1022489209332927 342306048548590 328717138574533 439703699384584 1250841949052893 226446805904869 337311781446902 272450687310201 983490180331727 1329593231427121 1057041717229744 110875391163525 631842700541257 353425137200360 106750162246...

output:

0
14963454
29504132475
203878226275
8778367031870
15079682243266455
149351201237842
2430883872230178

result:

ok 8 numbers

Test #7:

score: 0
Accepted
time: 86ms
memory: 4304kb

input:

8
92894 904648320997198759 857077283552821319
5796497585331 10287383430483 3443981158080 3307261546850 4423910306892 12584867031801 2278307777449 3393733253885 2741158205233 9895009642558 13377192887408 10635020251022 1115530268804 6357043250803 3555851608183 10740258578761 8070377462103 13134968899...

output:

0
21583598
4114016689
5953125168816
9610340743247
133189637386353298
124668826875053
21617048982826

result:

ok 8 numbers