(1 + 2001/2002)^(2002/2001)と(1 + 2002/2001)^(2001/2002)の大小を較べよ。
数学的解法によらないで、プログラミングで解いてください。
使用言語はC++、Ruby、Pythonのいずれかでお願いします。
ちなみに、私は以下のように解きました。
(ただし、両辺が等号で結ばれないことを前提にしています。)
lang
1from decimal import * 2getcontext().prec = 30 3i = 2001 4j = 2002 5 6if (Decimal(1) + (Decimal(i) / Decimal(j)))**(Decimal(j) / Decimal(i)) > (Decimal(1) + (Decimal(j) / Decimal(i)))**(Decimal(i) / Decimal(j)): 7 print '(1 + 2001/2002)^(2002/2001)>(1 + 2002/2001)^(2001/2002)' 8else: 9 print '(1 + 2001/2002)^(2002/2001)<(1 + 2002/2001)^(2001/2002)'
追記
回答がついてから気がついたのですが、
上記の解き方でなく、素直に
lang
1i = 2001.0 2j = 2002.0 3 4print (1.0 + (i / j))**(j / i) 5print (1.0 + (j / i))**(i / j)
の出力結果が
2.00019299755
1.99980699269
なので、
(1 + 2001/2002)^(2002/2001) > (1 + 2002/2001)^(2001/2002)
とした方がいいと思いました。
一般に、二つの数の大小を比較する問題が出たときは、
「答えだけを示すのではなく、
(どの程度の計算精度を必要としたかわかるように)二つの数の計算結果を出力したあと、
答えを示す」
とした方がいいと思いました。
今回の場合、二つの数の計算結果を出力したことで
decimal を必要としない程度の計算精度でよかったのだとわかります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。