• ベストアンサー

Javaについて。初心者です。

Java初心者です。 一ヶ月前ほどから始めて、色々なプログラミングをしながらレベルアップしていこうと思っているのですが、 どうしてもわからない問題があり質問させていただきした。 『ホテルの部屋に1番から順に番号をつけます。 このとき、「4」は 死を連想し、「9」 は 苦を連想するので、 「4」と「9」を使わないで番号を付けます。 さて500番目の部屋の番号は何番となるでしょうか? 』 という問題です。 是非模範解答を教えていただけると助かります。 なかなかほかの人が書いたコードを見ることがないので、 参考にさせてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.3

> おお、これは8進数ですね! 正解です♪ > ですが80台や90台も入ってこれないとなると、ただの8進数でもない気がします…。 8進数では「8」も「9」も使いませんので問題ありません。 77番の次の部屋は100番です。 #2で答えが出ていますが、この問題は  (1)部屋の番号を8進数で表す  (2)以下の対応表で各桁の数字を置き換える という手順で解くことができます。 ☆対応表  0 → 0  1 → 1  2 → 2  3 → 3  4 → 5 (4は使えないため)  5 → 6  6 → 7  7 → 8

shunyade-
質問者

お礼

ご丁寧にありがとうございますm(_ _)m とてもわかりやすかったです! 参考にして、頑張ってみます!!

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

絶対模範じゃないプログラム: public class HotelNumber { public static void main(String[] args) { System.out.println(Integer.toOctalString(500).replace('7', '8').replace('6', '7').replace('5', '6').replace('4', '5')); } } ちなみに 500 を 8進数に直しても 1104 にはならんと思う.

shunyade-
質問者

お礼

(Integer.toOctalString(500).replace('7', '8').replace('6', '7').replace('5', '6').replace('4', '5')); これの使い方をググって参考にします! 丁寧にありがとうございますm(_ _)m

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

Javaはあまり得意ではないので考え方だけ。 考えやすいように、問題をちょこっと変えてみます。 『ホテルの部屋に1番から順に番号をつけます。 このとき、「8」と「9」を使わないで番号を付けます。 さて500番目の部屋の番号は何番となるでしょうか? 』 このときの対応表を作ってみると、  何番目の部屋か → 部屋番号  1 → 1  2 → 2  (略)  6 → 6  7 → 7  8 → 10 (8, 9は使えないため)  9 → 11  10 → 12  (略)  15 → 17  16 → 20 (8, 9は使えないため)  (以下略) この対応表を見て、何か気づくことはありませんか? (ヒント:進数)

shunyade-
質問者

補足

質問者です! おお、これは8進数ですね! 500を8進数に直すと1104になります…。 ですが80台や90台も入ってこれないとなると、ただの8進数でもない気がします…。 8進数などをどうやってプログラムに組み込めばいいんだろう(>_<)

関連するQ&A