QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#129891 | #4366. Forever Young | silxi | AC ✓ | 10ms | 7604kb | C++20 | 3.9kb | 2023-07-23 03:34:46 | 2023-07-23 03:34:49 |
Judging History
answer
//Randomness stuff, ckmin, ckmax are optional--depends on time
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pi;
typedef pair<ll,ll> pl;
typedef pair<ld,ld> pd;
typedef vector<int> vi;
typedef vector<ld> vd;
typedef vector<ll> vl;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
#define FOR(i, a, b) for (int i=a; i<(b); i++)
#define F0R(i, a) for (int i=0; i<(a); i++)
#define FORd(i,a,b) for (int i = (b)-1; i >= a; i--)
#define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)
#define trav(a,x) for (auto& a : x)
#define uid(a, b) uniform_int_distribution<int>(a, b)(rng)
#define sz(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(), x.end()
#define ins insert
template<class T> bool ckmin(T& a, const T& b) { return b < a ? a = b, 1 : 0; }
template<class T> bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; }
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
typedef unsigned long long ull;
ull modmul(ull a, ull b, ull M) {
return ((__int128)(a) * b) % M;
}
ull modpow(ull b, ull e, ull mod) {
ull ans = 1;
for (; e; b = modmul(b, b, mod), e /= 2)
if (e & 1) ans = modmul(ans, b, mod);
return ans;
}
bool isPrime(ull n) {
if (n < 2 || n % 6 % 4 != 1) return (n | 1) == 3;
ull A[] = {2, 325, 9375, 28178, 450775, 9780504, 1795265022},
s = __builtin_ctzll(n-1), d = n >> s;
for (ull a : A) { // ^ count trailing zeroes
ull p = modpow(a%n, d, n), i = s;
assert(p < n);
while (p != 1 && p != n - 1 && a % n && i--)
p = modmul(p, p, n);
if (p != n-1 && i != s) {
return 0;
}
}
return 1;
}
ull pollard(ull n) {
auto f = [n](ull x) { return modmul(x, x, n) + 1; };
ull x = 0, y = 0, t = 30, prd = 2, i = 1, q;
while (t++ % 40 || __gcd(prd, n) == 1) {
if (x == y) x = ++i, y = f(x);
if ((q = modmul(prd, max(x,y) - min(x,y), n))) prd = q;
x = f(x), y = f(f(y));
}
return __gcd(prd, n);
}
vector<ull> factor(ull n) {
if (n == 1) return {};
if (isPrime(n)) return {n};
ull x = pollard(n);
auto l = factor(x), r = factor(n / x);
l.insert(l.end(), all(r));
return l;
}
vector<pair<ull, int>> v;
vector<ull> factors;
void rec(int i, ull cur) {
if (i == sz(v)) {
factors.push_back(cur);
return;
}
else {
ull mult = 1;
for (int j = 0; j <= v[i].second; j++) {
rec(i+1, cur * mult);
mult *= v[i].first;
}
}
}
ull Y, L;
bool test(ull b) {
if (b < 10) return true;
vector<ull> d;
ll y = Y;
while (y > 0) {
if (y % b >= 10) return false;
d.push_back(y % b) ;
y /= b;
}
ull mult = 1;
ull res = 0;
for (auto digit: d) {
res += digit * mult;
mult *= 10;
}
return res >= L;
}
const int maxn = 1e6+5;
int spf[maxn];
void init_spf() {
spf[1] = 1;
for (int i = 2; i < maxn; i++) if (!spf[i]) {
for (int j = i; j < maxn; j += i) {
if (!spf[j]) spf[j] = i;
}
}
}
bool check(ull x) {
for (ull i = 2; i*i <= x; i++) {
if (x % i == 0) return false;
}
return true;
}
int main() {
init_spf();
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> Y >> L;
ull ans = 10;
for (ull x = Y; x > Y-10; x--) {
map<ull, int> mp;
ull y = x;
// for (int i = 2; i < maxn; i++) {
// if (spf[i] == i && y % i == 0) {
// while (y % i == 0) {
// mp[i]++;
// y /= i;
// }
// }
// }
auto primes = factor(y);
for (auto p: primes) mp[p]++;
v.clear(); factors.clear();
for (auto p: mp) v.push_back(p);
rec(0, 1);
for (auto b: factors) {
if (test(b)) {
ckmax(ans, b);
}
}
}
cout << ans << '\n';
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 9ms
memory: 7480kb
input:
32 20
output:
16
result:
ok single line: '16'
Test #2:
score: 0
Accepted
time: 6ms
memory: 7440kb
input:
2016 100
output:
42
result:
ok single line: '42'
Test #3:
score: 0
Accepted
time: 4ms
memory: 7396kb
input:
1000000000000000000 10
output:
1000000000000000000
result:
ok single line: '1000000000000000000'
Test #4:
score: 0
Accepted
time: 9ms
memory: 7440kb
input:
149239876439186 470
output:
11
result:
ok single line: '11'
Test #5:
score: 0
Accepted
time: 9ms
memory: 7384kb
input:
4851495 95
output:
539054
result:
ok single line: '539054'
Test #6:
score: 0
Accepted
time: 9ms
memory: 7440kb
input:
19839853985 19839853985
output:
10
result:
ok single line: '10'
Test #7:
score: 0
Accepted
time: 5ms
memory: 7396kb
input:
1000000000000000000 17
output:
999999999999999993
result:
ok single line: '999999999999999993'
Test #8:
score: 0
Accepted
time: 9ms
memory: 7404kb
input:
1000000000000000000 23
output:
499999999999999998
result:
ok single line: '499999999999999998'
Test #9:
score: 0
Accepted
time: 4ms
memory: 7456kb
input:
1000000000000000000 58
output:
166666666666666666
result:
ok single line: '166666666666666666'
Test #10:
score: 0
Accepted
time: 10ms
memory: 7488kb
input:
1000000000000000000 145
output:
999999997
result:
ok single line: '999999997'
Test #11:
score: 0
Accepted
time: 4ms
memory: 7516kb
input:
1000000000000000000 230
output:
500000000
result:
ok single line: '500000000'
Test #12:
score: 0
Accepted
time: 9ms
memory: 7488kb
input:
1000000000000000000 1050
output:
999999
result:
ok single line: '999999'
Test #13:
score: 0
Accepted
time: 4ms
memory: 7452kb
input:
1000000000000000000 9593
output:
1000
result:
ok single line: '1000'
Test #14:
score: 0
Accepted
time: 9ms
memory: 7452kb
input:
1000000000000000000 1000000000000000000
output:
10
result:
ok single line: '10'
Test #15:
score: 0
Accepted
time: 5ms
memory: 7436kb
input:
981759819857981583 10
output:
981759819857981583
result:
ok single line: '981759819857981583'
Test #16:
score: 0
Accepted
time: 9ms
memory: 7380kb
input:
981759819857981583 17
output:
981759819857981576
result:
ok single line: '981759819857981576'
Test #17:
score: 0
Accepted
time: 9ms
memory: 7436kb
input:
981759819857981583 23
output:
490879909928990790
result:
ok single line: '490879909928990790'
Test #18:
score: 0
Accepted
time: 4ms
memory: 7384kb
input:
981759819857981583 58
output:
196351963971596315
result:
ok single line: '196351963971596315'
Test #19:
score: 0
Accepted
time: 4ms
memory: 7476kb
input:
981759819857981583 140
output:
10
result:
ok single line: '10'
Test #20:
score: 0
Accepted
time: 4ms
memory: 7432kb
input:
981759819857981583 230
output:
10
result:
ok single line: '10'
Test #21:
score: 0
Accepted
time: 9ms
memory: 7388kb
input:
981759819857981583 1050
output:
10
result:
ok single line: '10'
Test #22:
score: 0
Accepted
time: 4ms
memory: 7384kb
input:
981759819857981583 9593
output:
10
result:
ok single line: '10'
Test #23:
score: 0
Accepted
time: 4ms
memory: 7472kb
input:
981759819857981583 74292
output:
10
result:
ok single line: '10'
Test #24:
score: 0
Accepted
time: 6ms
memory: 7364kb
input:
140986742987698176 10
output:
140986742987698176
result:
ok single line: '140986742987698176'
Test #25:
score: 0
Accepted
time: 7ms
memory: 7416kb
input:
158918593147583853 849
output:
10
result:
ok single line: '10'
Test #26:
score: 0
Accepted
time: 4ms
memory: 7448kb
input:
206808958398095782 82
output:
25851119799761972
result:
ok single line: '25851119799761972'
Test #27:
score: 0
Accepted
time: 4ms
memory: 7480kb
input:
675097804382958295 123
output:
12
result:
ok single line: '12'
Test #28:
score: 0
Accepted
time: 9ms
memory: 7440kb
input:
782891909194182377 95
output:
86987989910464708
result:
ok single line: '86987989910464708'
Test #29:
score: 0
Accepted
time: 3ms
memory: 7516kb
input:
782891909194182377 96
output:
25012
result:
ok single line: '25012'
Test #30:
score: 0
Accepted
time: 9ms
memory: 7456kb
input:
782891909194182377 30000
output:
11
result:
ok single line: '11'
Test #31:
score: 0
Accepted
time: 9ms
memory: 7372kb
input:
988246947114416919 93
output:
109805216346046324
result:
ok single line: '109805216346046324'
Test #32:
score: 0
Accepted
time: 5ms
memory: 7436kb
input:
988246947114416919 95
output:
26512
result:
ok single line: '26512'
Test #33:
score: 0
Accepted
time: 3ms
memory: 7432kb
input:
988246947114416919 29000
output:
10
result:
ok single line: '10'
Test #34:
score: 0
Accepted
time: 4ms
memory: 7440kb
input:
9000630015000129 100
output:
100002
result:
ok single line: '100002'
Test #35:
score: 0
Accepted
time: 6ms
memory: 7388kb
input:
999996640752785561 100
output:
31622
result:
ok single line: '31622'
Test #36:
score: 0
Accepted
time: 2ms
memory: 7432kb
input:
10 10
output:
10
result:
ok single line: '10'
Test #37:
score: 0
Accepted
time: 4ms
memory: 7436kb
input:
11 10
output:
11
result:
ok single line: '11'
Test #38:
score: 0
Accepted
time: 9ms
memory: 7436kb
input:
19 13
output:
16
result:
ok single line: '16'
Test #39:
score: 0
Accepted
time: 2ms
memory: 7488kb
input:
949986743716085769 100
output:
983040
result:
ok single line: '983040'
Test #40:
score: 0
Accepted
time: 9ms
memory: 7544kb
input:
801548868891525129 100
output:
737280
result:
ok single line: '737280'
Test #41:
score: 0
Accepted
time: 3ms
memory: 7468kb
input:
926093549141544969 100
output:
675841
result:
ok single line: '675841'
Test #42:
score: 0
Accepted
time: 9ms
memory: 7448kb
input:
949980220730081289 100
output:
491520
result:
ok single line: '491520'
Test #43:
score: 0
Accepted
time: 6ms
memory: 7504kb
input:
618476800577126409 100
output:
409600
result:
ok single line: '409600'
Test #44:
score: 0
Accepted
time: 9ms
memory: 7452kb
input:
890865346255534089 100
output:
30720
result:
ok single line: '30720'
Test #45:
score: 0
Accepted
time: 4ms
memory: 7484kb
input:
859144460042470409 99
output:
25600
result:
ok single line: '25600'
Test #46:
score: 0
Accepted
time: 5ms
memory: 7380kb
input:
845488492963637769 100
output:
23040
result:
ok single line: '23040'
Test #47:
score: 0
Accepted
time: 6ms
memory: 7440kb
input:
896892642854698249 92
output:
21760
result:
ok single line: '21760'
Test #48:
score: 0
Accepted
time: 4ms
memory: 7536kb
input:
994907428831831689 100
output:
21120
result:
ok single line: '21120'
Test #49:
score: 0
Accepted
time: 4ms
memory: 7448kb
input:
836899046557320969 100
output:
3840
result:
ok single line: '3840'
Test #50:
score: 0
Accepted
time: 6ms
memory: 7452kb
input:
949986743716085769 99
output:
105554082635120640
result:
ok single line: '105554082635120640'
Test #51:
score: 0
Accepted
time: 9ms
memory: 7516kb
input:
801548868891525129 99
output:
89060985432391680
result:
ok single line: '89060985432391680'
Test #52:
score: 0
Accepted
time: 9ms
memory: 7472kb
input:
926093549141544969 99
output:
102899283237949440
result:
ok single line: '102899283237949440'
Test #53:
score: 0
Accepted
time: 4ms
memory: 7384kb
input:
949980220730081289 99
output:
105553357858897920
result:
ok single line: '105553357858897920'
Test #54:
score: 0
Accepted
time: 10ms
memory: 7604kb
input:
618476800577126409 99
output:
68719644508569600
result:
ok single line: '68719644508569600'
Test #55:
score: 0
Accepted
time: 4ms
memory: 7384kb
input:
890865346255534089 99
output:
98985038472837120
result:
ok single line: '98985038472837120'
Test #56:
score: 0
Accepted
time: 5ms
memory: 7368kb
input:
859144460042470409 98
output:
95460495560274489
result:
ok single line: '95460495560274489'
Test #57:
score: 0
Accepted
time: 9ms
memory: 7448kb
input:
845488492963637769 99
output:
93943165884848640
result:
ok single line: '93943165884848640'
Test #58:
score: 0
Accepted
time: 5ms
memory: 7388kb
input:
896892642854698249 91
output:
99654738094966472
result:
ok single line: '99654738094966472'
Test #59:
score: 0
Accepted
time: 6ms
memory: 7468kb
input:
994907428831831689 99
output:
110545269870203520
result:
ok single line: '110545269870203520'
Test #60:
score: 0
Accepted
time: 3ms
memory: 7488kb
input:
836899046557320969 99
output:
92988782950813440
result:
ok single line: '92988782950813440'