CP-templates

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub Misuki743/CP-templates

:warning: numtheory/slowFactorize.cpp

Code

vector<pll> slowFactorize(ll val) {
  vector<pll> res;
  for(ll d = 2; d * d <= val; d++) {
    if (val % d != 0) continue;
    res.emplace_back(d, 0);
    while(val % d == 0) {
      val /= d;
      res.back().second++;
    }
  }
  if (val != 1) res.emplace_back(val, 1);
  return res;
}

vector<ll> factors(vector<pll> pf) {
  vector<ll> res(1, 1);
  for(auto [p, idx] : pf) {
    vector<ll> tmp;
    ull base = 1;
    for(int i = 0; i <= idx; i++, base *= p)
      for(ll X : res)
        tmp.emplace_back(X * base);
    res.swap(tmp);
  }
  return res;
}
#line 1 "numtheory/slowFactorize.cpp"
vector<pll> slowFactorize(ll val) {
  vector<pll> res;
  for(ll d = 2; d * d <= val; d++) {
    if (val % d != 0) continue;
    res.emplace_back(d, 0);
    while(val % d == 0) {
      val /= d;
      res.back().second++;
    }
  }
  if (val != 1) res.emplace_back(val, 1);
  return res;
}

vector<ll> factors(vector<pll> pf) {
  vector<ll> res(1, 1);
  for(auto [p, idx] : pf) {
    vector<ll> tmp;
    ull base = 1;
    for(int i = 0; i <= idx; i++, base *= p)
      for(ll X : res)
        tmp.emplace_back(X * base);
    res.swap(tmp);
  }
  return res;
}
Back to top page