プログラマー[Kakao]n進数ゲーム(Java)


リンク


質問リンク

問題の説明


救命圏活動のコードサークルでは、伝統的に遊ぶゲームがあります.このゲームはみんなが円に座って、順番に数字を言うゲームで、ルールは以下の通りです.
数字はゼロから順に言う.1人目は0、2人目は1、…10人目は9.
10以上の数字から、ひとつひとつ.つまり、11人目が10の1位、12人目が2位、つまり0です.
このようにゲームを行うと、
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, …
順番に数字を言えばいいです.
一方、エンコーディングサークルのメンバーもパソコンを操作している人のようにバイナリ数でゲームをしている場合、
0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, …
順番に数字を言えばいいです.
バイナリでゲームをすることに慣れた人たちは、難易度を上げるために、バイナリから16進数までのすべての進数でゲームをすることにした.デジタルゲームに慣れていない救命圏は、ゲームに負けて罰せられる屈辱を避けるために、自分の言う数字を事前にスマートフォンに出力するプログラムを作るつもりだ.パイプ上のプログラムを実現します.

入力フォーマット


陣法nは、予め求めた数t、ゲームに参加する者m、パイプの順番pである.
  • 2 ≦ n ≦ 16
  • 0 < t ≦ 1000
  • 2 ≦ m ≦ 100
  • 1 ≦ p ≦ m
  • 出力フォーマット


    パイプが言う数字tを順番に表示するスペースのない文字列.しかし、10~15はそれぞれ大文字A~Fで出力される.

    I/O例



    に答える

  • 最悪の場合Stringを求める.(文字列がt*m未満に続く)
  • Stringチューブのみの
  • 実は初めてこの問題に直面して、私は多くの数学の問題を考えて、結局頭が混乱して、全然解けませんでした
    この問題を見てやっと分かった.
    1000*100の長さの文字列は、コンパイラがうまく処理できるので、メモリの問題は私の問題ではありません.まずそれを実現しましょう.
    まず問題を解決することが大切な私はテーマさえ知らないので、最悪の場合、文字列が長すぎるのではないかと心配して、袖手で傍観することに慣れました.
    そして今日この問題が当時の1番問題であることに気づき、衝撃を受けてすぐに挑戦しました.
    こんなに簡単に解決できる問題

    コード#コード#

    class Solution {
        static char[] arr = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        public String to_Knum(int n, int k){
            String ans = "";
            while(n > 0) {
                ans = arr[n % k] + ans;
                n /= k;
            }
            return ans;
        }
        public String solution(int n, int t, int m, int p) {
            String answer = "";
            String temp = "0";
            int k = p;
            int num = 1;
            while(temp.length() <= t * m) 
            { 
                temp += to_Knum(num++, n);
            }
            for(int i = 0; i < t; i++, k += m)
            {
                answer += temp.charAt(k - 1);
            }
            return answer;
        }
    }