ガジェット通信

見たことのないものを見に行こう

第87回「今週のアルゴリズム:3進法だとどう変わる?」正解者発表

DATE:
  • ガジェット通信を≫

「今週のアルゴリズム」とは

「今週のアルゴリズム」問題は、毎週火曜日にちょっとした問題を出題し、正解するとニックネームを掲載していくというシリーズ問題です。そして、正解した方全員に「たいへんよくできました」バッジも付与されます。

第87回は「今週のアルゴリズム:3進法だとどう変わる?」の問題です。

問題文「第87回 3進法だとどう変わる?」

コンピュータで数字を取り扱うとき、2進数で考えることがよくあります。
データの最小単位として「bit」が使われ、0か1で表現します。
10進数を2進数に変換するとき、以下のような式が使われます。
例) 19(10進数) = 1 × 24 + 0 × 23 + 0 × 22 + 1 × 21 + 1 × 20 = 10011(2進数)

一方、3進数で考えるとき、データの最小単位は「trit」と呼ばれます。
10進数を3進数に変換するとき、以下のような2通りの表現方法が知られています。

【0, 1, 2の3つの数字を使うパターン】
例) 19(10進数) = 2 × 32 + 0 × 31 + 1 × 30 = 201(3進数)

【-1, 0, 1の3つの数字を使うパターン】
例) 19(10進数) = 1 × 33 + (-1) × 32 + 0 × 31 + 1 × 30 = 1T01(3進数) ※-1をTで表現しています。

※3進数の表現について詳しく知りたい方は、以下のページを参照してください。(本問を解く上では不要です。)
https://en.wikipedia.org/wiki/Balanced_ternary

上記の表現方法を使うと、10進数で0~20の数は以下のように表現できます。

10進数2進数3進数(0, 1, 2)3進数(-1, 0, 1)00000000000000100001000100012000100002001T3000110010001040010000110011500101001201TT600110002001T0700111002101T18010000022010T9010010100010010010100101010111010110102011T120110001100110130110101110111140111001121TTT150111101201TT0161000001211TT1171000101221T0T181001002001T00191001102011T01201011002021T1T

標準入力から整数 n が与えられたとき、10進数で0以上 n 以下の数のうち、
いずれの3進法での表現を使ってもすべての桁が同じになるような数がいくつあるかを標準出力に出力してください。
例えば、nとして20が与えられたとき、上の表のように黄色の8個がありますので、標準出力に8を出力します。

【入出力サンプル】
標準入力
20

標準出力
8

正解者

おめでとうございます!正解者のみなさんです。(新着順)

Azicore様

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。

TOP