先日行われたAtcoder ABC 193 のC問題の解説において納得できない点があります
問題
整数 Nが与えられます。1以上N以下の整数のうち、2以上の整数a,bを用いてa^bと表せないものはいくつあるでしょうか?
制約
Nは整数, N < 10^10
Ans
1#include <iostream> 2#include <unordered_set> 3using namespace std; 4using ll = int64_t; 5int main(){ 6 ll N; 7 cin >> N; 8 unordered_set<ll> s; 9 for(ll a = 2; a * a <= N; a++){ 10 ll x = a * a; 11 while(x <= N){ 12 s.insert(x); 13 x *= a; 14 } 15 } 16 cout << N - s.size() << endl; 17}
この回答においてaがll型である必要性がわからないです。
たしかにこれをintにするとTLEとなって正常なループが行われてないことは推測できるのですが、
たかだか10^5程度である(?)aがなぜll型になるのでしょうか。
回答お願いいたします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/03 00:42