すべてのチャレンジ
簡単 0件解決済み 正答率0%

チェス盤の穀粒の倍増

指定したマスの穀粒数と、全64マスの合計を計算してください。

1マス目には1粒の穀粒があります。それ以降の各マスには、直前のマスの2倍の穀粒が置かれます。指定されたマスの穀粒数と、1〜64マスすべての合計を返してください。合計値は符号付き64ビット整数では表せないほど大きくなるため、各値は10進数の文字列で返してください。

chessboard_grains(square) を実装してください。

入力

square: 求めるマスの番号(1から始まります)。

出力

2つの10進数文字列を返してください: [指定したマスの穀粒数, 全64マスの合計穀粒数]。

制約

1 ≤ square ≤ 64。出力の文字列は10進数字のみで構成し、カンマ、スペース、先頭のゼロは含めないでください。

例

例 1
入力:
square = 6

期待される出力:
expected = ["32", "18446744073709551615"]
入力:
long long square = 6;

期待される出力:
std::vector<std::string> expected = {"32", "18446744073709551615"};
入力:
long square = 6;

期待される出力:
string[] expected = new string[] {"32", "18446744073709551615"};

解説

最初の6マスの穀粒数は1, 2, 4, 8, 16, 32です。全体の合計は 1 + 2 + … + 2⁶³ = 2⁶⁴ − 1 となります。

例 2
入力:
square = 1

期待される出力:
expected = ["1", "18446744073709551615"]
入力:
long long square = 1;

期待される出力:
std::vector<std::string> expected = {"1", "18446744073709551615"};
入力:
long square = 1;

期待される出力:
string[] expected = new string[] {"1", "18446744073709551615"};

解説

1マス目には1粒の穀粒があります。2つ目の出力は常に全64マスの合計であり、指定したマスまでの合計ではありません。

参考資料

この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。

他の人の解答から学ぶ

コミュニティの解答

まだ公開された解答がありません。この課題を解いて最初の解答を共有しましょう。