2008-09-04 SRM416 TopCoder 250 2進数Nが与えられた時にNと1のビットの数の個数が等しいNより大きい最小の数を返せという問題。 数字を配列に直してnextPermutationするだけ。 500 要約すると与えられた数M(<=6,000,000)に対して、M以下の数を互いに異なる6つの正の数で表す方法は何通りあるか答えよという問題。 今6つの数を とおく、このとき総和は となり、 とおくと、s <= Mとなる場合の数は((M-k)/6)*(kを表す方法の数)通りある。(kを表す方法の数)をO(5 * M)のDPで求めればよい。