[AtCoder] ABC 193 C – Unexpressed
問題
方針
愚直に \( a^b \) で表される数字を数え上げます。\( b \geq 2 \) より、\( 2 \leq a \leq \sqrt{N} \) の範囲で計算すれば良いです。\( a \) を固定したとき、\( a^b \leq N \) より、\( b \leq \log_a{N} \) なので全探索を行えます。
コード
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll N; cin >> N; set<ll> s; for (ll a = 2; a * a <= N; a++) { ll x = a; while (x * a <= N) { s.insert(x * a); x *= a; } } cout << N - s.size() << "\n"; return 0; }
ディスカッション
コメント一覧
まだ、コメントがありません