A,B,C) = (4,1,3)で、(0,0,1)から出力を求める
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/05 15:38
回答3件
0
ベストアンサー
様々な実装方法があるかと思いますが、ご質問者様の余りを使用する考え方であれば、右の数値から左の数値に向かって再帰的に余りを求めていけば実現できるかと思います。
例.
(A,B,C) = (4,1,3)で、(0,0,1)から開始して23番目の出力を求めるには、
① 23を一番右の値(3)に1を加えた、4で割る ⇒ 商…5、余り…3
② 上記①の商(5)に対して、今度は右から2番目の数値(1)に1を加えた、2で割る ⇒ 商…2、余り…1
③ 上記②の商(2)に対して、今度は右から3番目の数値(4)に1を加えた、5で割る ⇒ 商…0、余り…2
あとは、求めた余りを③→②→①の順で接続した(2,1,3)が、23番目の出力結果となる。
投稿2018/12/05 16:51
編集2018/12/05 16:54総合スコア1083
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
4進数の繰り上げと同じなので、
(例)下記で10進数の5を4進数の文字列に変換します。
Integer.toString(5,4);
文字列の4進数で返却されるので、後はお好きなように配列に変換してください。
投稿2018/12/05 16:51
編集2018/12/05 16:55総合スコア39
0
配列で管理したほうが圧倒的に楽そう
java
1int[] moveUp = {1, 2, 3}; 2int[] now = new int[3]; 3 4while(now[0] <= moveUp[0]) { 5 for(int i = now.length - 1; i > 0; i--) { 6 now[i]++; 7 if(now[i] <= moveUp[i]) break; 8 now[i] = 0; 9 now[i - 1]++; 10 } 11 // 配列の内容を出力 12}
投稿2018/12/05 16:41
総合スコア20651
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。