提出 #41076054


ソースコード 拡げる

#include <atcoder/all>
using namespace atcoder;
#include <bits/stdc++.h>
#include <cassert>
using namespace std;
using ll = long long;
const double pi = 3.14159265359;
const ll INF = 1LL << 60;

template<class T> inline bool chmin(T& a, T b){ if (a > b){a = b; return true;} return false;}
template<class T> inline bool chmax(T& a, T b){ if (a < b){a = b; return true;} return false;}

//using mint = modint998244353;
//using mint = modint1000000007;
//using mint = modint;  // mint::set_mod(p); later
//using mint = static_modint<1000000009>;

int main()
{
  cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);

  ll N;
  int P;
  cin >> N >> P;

  vector<bool> sieve(101);
  vector<int> primes;

  // エラトステネスの篩
  for (int i = 2; i*i <= 100; i++){
    if (sieve[i]) continue;
    for (int j = 2; i*j <= 100; j++){
      sieve[i*j] = true;
    }
  }

  for (int i = 2; i < 100; i++){
    if (!sieve[i]) primes.push_back(i);
  }

  // Solve
  vector<ll> vec1, vec2;
  vec1.push_back(1);
  vec2.push_back(1);

  for (int x : primes){
    if (x > P) break;

    if (vec1.size() > vec2.size()){
      swap(vec1, vec2);
    }

    int sz = (int) vec1.size();
    
    for (int i = 0; i < sz; i++){
      ll v = vec1[i];
      v *= x;
      while (v <= N){
	vec1.push_back(v);
	v *= x;
      }
    }
  }

  ll ans = 0;
  sort(vec2.begin(), vec2.end());

  for (ll x : vec1){
    ll y = N / x;
    auto p = upper_bound(vec2.begin(), vec2.end(), y);
    int count = (int) (p - vec2.begin());
    ans += count;
  }

  cout << ans << endl;
  return 0;
}

提出情報

提出日時
問題 G - P-smooth number
ユーザ unnohideyuki
言語 C++ (GCC 9.2.1)
得点 600
コード長 1641 Byte
結果 AC
実行時間 520 ms
メモリ 58572 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 600 / 600
結果
AC × 2
AC × 33
セット名 テストケース
Sample sample_01.txt, sample_02.txt
All hack_01.txt, sample_01.txt, sample_02.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt
ケース名 結果 実行時間 メモリ
hack_01.txt AC 520 ms 58012 KiB
sample_01.txt AC 2 ms 3596 KiB
sample_02.txt AC 514 ms 58572 KiB
test_01.txt AC 3 ms 3580 KiB
test_02.txt AC 2 ms 3436 KiB
test_03.txt AC 2 ms 3540 KiB
test_04.txt AC 518 ms 58400 KiB
test_05.txt AC 434 ms 58004 KiB
test_06.txt AC 347 ms 50796 KiB
test_07.txt AC 273 ms 31828 KiB
test_08.txt AC 215 ms 28288 KiB
test_09.txt AC 175 ms 28292 KiB
test_10.txt AC 133 ms 24920 KiB
test_11.txt AC 98 ms 16484 KiB
test_12.txt AC 75 ms 14320 KiB
test_13.txt AC 57 ms 10152 KiB
test_14.txt AC 519 ms 58412 KiB
test_15.txt AC 438 ms 58000 KiB
test_16.txt AC 343 ms 50892 KiB
test_17.txt AC 464 ms 55760 KiB
test_18.txt AC 340 ms 50976 KiB
test_19.txt AC 492 ms 56816 KiB
test_20.txt AC 456 ms 55688 KiB
test_21.txt AC 360 ms 51852 KiB
test_22.txt AC 385 ms 52696 KiB
test_23.txt AC 452 ms 55476 KiB
test_24.txt AC 437 ms 54784 KiB
test_25.txt AC 447 ms 55440 KiB
test_26.txt AC 3 ms 3632 KiB
test_27.txt AC 2 ms 3572 KiB
test_28.txt AC 121 ms 16888 KiB
test_29.txt AC 6 ms 3748 KiB
test_30.txt AC 41 ms 9288 KiB