TopCoder SRM 690 Div1 Easy: WolfCardGame

問題

1~100までの数字をK個選び、絶対にNにならない組み合わせを作る。

解法

(aの倍数)±(aの倍数)=(aの倍数) となることを利用する。 N が i = 2, 3, 4, 5で割り切れるかを確認していき、割り切れない場合は [ i, 2i, ... , Ki ] を答えとする。

N=60の場合は2, 3, 4, 5のいずれでも割り切れてしまうため、7の倍数を利用する。 しかし、N=60, K=15の場合は、100以下の7の倍数が14個しかないため、 何かもう一つ数字を追加する必要がある。今回は1を追加した。

class WolfCardGame {
public:
    vector <int> createAnswer( int N, int K ) {
        vector<int> res;
    
        for(i = 2, i < 6, i++) {
            if (N%i != 0) {
                for(j = 1, j <= K , j++) {
                    res.push_back(i*j);
                }
                break;
            }
        }

        if (N == 60) {
            res.push_back(1);
            for(i = 1; i < K; i++) {
                res.push_back(7 * i);
            }
        }

        return res;
    }
};
感想

N=60の考慮+K=15の考慮が漏れてて何度も修正した。。。反省