QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#129891#4366. Forever YoungsilxiAC ✓10ms7604kbC++203.9kb2023-07-23 03:34:462023-07-23 03:34:49

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-23 03:34:49]
  • 评测
  • 测评结果:AC
  • 用时:10ms
  • 内存:7604kb
  • [2023-07-23 03:34:46]
  • 提交

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'