2017-12-03 23 views
0

古い「小麦とチェス盤」の問題があります: チェス盤に1個の穀物が最初の四角に置かれるように小麦が置かれた場合、 (後続の各四角形の穀物の数を2倍にします)。Python「小麦とチェス盤の伝説」

grains = 1 
for square in range(1, 64+1): 
print(square, grains) 
grains *= 2 
  • これは、結晶粒の数が「チェス盤」の完全な範囲を提供します。

ユーザーが特定の正方形の数字を入力し、特定のタイルごとに正しい数のグレインを取得するようにプログラミングするにはどうすればよいですか? Exp:input = 5答えが16であるなど range-Functionを使用する必要があります。可能であれば

ありがとうございます!

+0

あなたは 'の範囲(1、64)'で、ユーザーの代わりに、64からもらった番号を使用します(0ではない、正方形は1から始めると仮定)? –

答えて

0

はその後、我々が行うことができ、ユーザの入力に変数square

で平方数をしてみましょう:

grains = 2 ** (square - 1) 
print(grains) 

基本的に、あなたはそれぞれの正方形がそれで2^(n-1)粒を持っていることを確認します。このようにして、問題を単純化します。

+0

ありがとうございます。助けになる。しかし、range-Functionでそれを使用することは可能ですか? – Lunaris

+0

もちろん可能です。しかし、これは最も簡単な方法です。ご存知のように、私はループを使用していないので、結果を評価する時間はかなり一定であり、ループを超えて範囲を使用する場合とは異なり、単一ステップの操作です。しかし、「範囲」はすべての四角形について穀物を印刷するときに役立ちます。 –

0

タイルの粒子数= 2^nrTileです。 したがって、入力を求めて2^inputを返します。