2002年名古屋大学の入試問題について
解決済
回答 2
投稿 ・編集
- 評価
- クリップ 2
- VIEW 2,713
数学的解法によらないで、プログラミングで解いてください。
使用言語はC++、Ruby、Pythonのいずれかでお願いします。
ちなみに、私は以下のように解きました。
(ただし、両辺が等号で結ばれないことを前提にしています。)
from decimal import *
getcontext().prec = 30
i = 2001
j = 2002
if (Decimal(1) + (Decimal(i) / Decimal(j)))**(Decimal(j) / Decimal(i)) > (Decimal(1) + (Decimal(j) / Decimal(i)))**(Decimal(i) / Decimal(j)):
print '(1 + 2001/2002)^(2002/2001)>(1 + 2002/2001)^(2001/2002)'
else:
print '(1 + 2001/2002)^(2002/2001)<(1 + 2002/2001)^(2001/2002)'
追記
回答がついてから気がついたのですが、
上記の解き方でなく、素直に
i = 2001.0
j = 2002.0
print (1.0 + (i / j))**(j / i)
print (1.0 + (j / i))**(i / j)
の出力結果が
2.00019299755
1.99980699269
なので、
(1 + 2001/2002)^(2002/2001) > (1 + 2002/2001)^(2001/2002)
とした方がいいと思いました。
一般に、二つの数の大小を比較する問題が出たときは、
「答えだけを示すのではなく、
(どの程度の計算精度を必要としたかわかるように)二つの数の計算結果を出力したあと、
答えを示す」
とした方がいいと思いました。
今回の場合、二つの数の計算結果を出力したことで
decimal を必要としない程度の計算精度でよかったのだとわかります。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+2
v1 = (1 + 2001.0 / 2002) ** (2002.0 / 2001)
v2 = (1 + 2002.0 / 2001) ** (2001.0 / 2002)
if v1 == v2
cmp = " = "
elsif v1 > v2
cmp = " > "
else
cmp = " < "
end
puts "(1 + 2001/2002)^(2002/2001) #{cmp} (1 + 2002/2001)^(2001/2002)"
puts "#{v1} #{cmp} #{v2}"
実行結果:
(1 + 2001/2002)^(2002/2001) > (1 + 2002/2001)^(2001/2002)
2.000192997549895 > 1.9998069926912556
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+2
require 'bigdecimal'
precision = 30
n = BigDecimal( '1', precision)
i = BigDecimal('2001', precision)
j = BigDecimal('2002', precision)
a = (n + i/j)**(j/i)
b = (n + j/i)**(i/j)
string_build = proc { |cmp, i, j, n|
i, j, n = [i, j, n].map(&:to_i)
ret = ''
ret << "(#{n} + #{i}/#{j})^(#{j}/#{i})"
ret << "#{cmp}"
ret << "(#{n} + #{j}/#{i})^(#{i}/#{j})"
}
cmp =
if a == b
'='
elsif a > b
'>'
else
'<'
end
puts string_build.call(cmp, i, j, n)
# => (1 + 2001/2002)^(2002/2001)>(1 + 2002/2001)^(2001/2002)
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.19%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2014/11/24 07:15
ちなみに なんらかのグラフ描画ソフトをつかって (1+1/x)**x を描画させると、x != 0 の部分では常に単調増加なことがわかります。(Mac なら graphe を使って確認できます。)
この式を微分すると常に 0 なことからも単調増加なことがわかりますが。