C++相談室 part116at TECHC++相談室 part116 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト332:デフォルトの名無しさん 15/03/26 17:08:05.75 BDjvcE7V.net n桁のm進数の桁を入れ替えるプログラムを作りたいのですが、どうしたら効率的でしょうか。 桁数分(n個)ループを回すような愚直な方法しか思い付きません。 任意の並び替えを実現したいのですが、「○桁目を右に△個ずらす」ようなアルゴリズムでも構いません。 それを何回かやれば任意のケースに対応できると思うので。 nは16まで、mは64までに限っても良いです。 333:デフォルトの名無しさん 15/03/26 17:40:04.67 4eocBIkU.net char C[16]; swap(C[x], C[y]); 334:デフォルトの名無しさん 15/03/26 18:10:22.30 DVfty8jF.net 二進数を考える。 左シフトはN*2^M 右シフトはN/2^Mだよな。 これを一般化して、N*Radix^Mで左シフト N/Radix^Mで右シフト 出来そうじゃね? 335:デフォルトの名無しさん 15/03/26 18:15:03.52 DVfty8jF.net 結局POW使うんであればループは避けられん。か? 336:デフォルトの名無しさん 15/03/26 18:19:03.95 nSqXA52d.net 設計に制限がなければ n桁m進数表現クラスを作ってその桁を入れ替える、って素直にやるけど 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch