A - Exponential or Quadratic Editorial by penguinman
結論から言うと、\(2 \leq n \leq 4\) のとき答えは No
、そうでないとき答えは Yes
となります。
\(n=1\) のとき \(2^n \gt n^2\) であること、および \(2 \leq n \leq 4\) において \(2^n \leq n^2\) であることは実際に計算すれば明らかです。
問題は \(5 \leq n\) のときですが、これは数学的帰納法により \(2^n \gt n^2\) であることを示すことが可能です。
具体的な証明
まず、$n=5$ のとき、明らかに $2^n \gt n^2$ である。$\cdots$ ①
その上で、任意の $5$ 以上の整数 $k$ について、$n=k$ のときに $2^n \gt n^2$ が成り立つと仮定すると $n=k+1$ のときにも $2^n \gt n^2$ が成り立つこと(☆)を示す。
まず仮定より、$2^{k+1}=2 \times 2^k \gt 2k^2$ である。そして $2k^2$ は、以下のように変形可能である。
$2k^2 = (k^2+2k+1)+(k^2-2k-1) = (k+1)^2+(k-1)^2-2$
$5 \leq k$ においては $4 \leq k-1$ が成り立つため、$(k-1)^2-2$ は常に $14$ 以上となり、正である。
故に $5 \leq k$ において、$n=k$ のときに $2^n \gt n^2$ が成り立つならば $2^{k+1} = 2 \times 2^k \gt 2k^2 \gt (k+1)^2$ という式が立てられることが分かり、よって☆は示された。$\cdots$ ②
①、② より、$5 \leq n$ であるならば $2^n \gt n^2$ であることが示せた。
実装例 (C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n; cin >> n;
if(2 <= n && n <= 4) cout << "No" << endl;
else cout << "Yes" << endl;
}
なお、この他にも \(n\) がある程度大きい値であれば \(2^n \gt n^2\) が成り立つと予想し、それを元に問題を解くことも可能です。
実装例 (Python)
n = int(input())
n = min(n,10)
ans = 'No'
if pow(2,n) > n*n:
ans = 'Yes'
print(ans)
posted:
last update: