キャディプログラミングコンテスト2021(AtCoder Beginner Contest 193) C - Unexpressed
問題
整数Nが与えられます。1以上N以下の整数のうち、2以上の整数a,bを用いてと表せないものはいくつあるでしょうか?
制約
- Nは整数
考えたこと
bは2以上なので、まで調べればよいです。
コード
#define _GIBCXX_DEBUG #include <bits/stdc++.h> using namespace std; #define rep(i, n) for (int i = 0; i < (n); ++i) #define all(v) v.begin(), v.end() using namespace std; using ll = long long; int main(void) { ll n; cin >> n; set<ll> st; for (ll a = 2; a <= 100000; ++a) { ll num = a; num *= a; while (num <= n) { st.insert(num); num *= a; } } cout << n - st.size() << endl; return 0; }
解説を読んで
a * a <= Nって書けばよかったです。