1095 Nikifor-3

問題:

1,2,3,4が必ず含まれるような10進数が与えられたときに, その順列のなかで, 7で割れるようなものがあればそれを求める問題.

基本解法:

なぜ 1,2,3,4? --> この順列の10進数に対して, 7で割るとすべての余りが出現.

解法:

1,2,3,4についてはそれぞれ一つを抜きだし, 別に(最後に)考える. 0については, 前にあるとまずいので, 最後に全部くっつける.

それ以外の並べかたは? --> 実は適当でOK. 例えば, 5,3が残っているのなら, まず, 53 % 7 = 4. 1から4の順列を後につけるので,

 全体の余り = ( 4 * 10000 % 7 ) + ( 1 から 4 の順列 % 7 )
            = 2 + ( 1 から 4 の順列 % 7 )

となる. 上の第二項は好きに選べるのだから, 5にしてしまえば7の倍数になる. 5になるような順列は 1324. よって,

  5,3 + 1,3,2,4

と順に出力. (+は見やすくするために追加)

プログラム例

松崎 file1095.matsuzaki.cpp


添付ファイル: file1095.matsuzaki.cpp 933件 [詳細]

Last-modified: 2009-11-06 (金) 13:25:51 (5282d)