P9687

· · 题解

思路

首先是判断 -1 的情况:如果有 p0 要满足条件,那么最少也要 2\times p + 1 个数,判断是否大于 n 即可。

其他的情况:上面已经说过,满足条件最少也需要 2\times p + 1 个数,那么除去这些数,为了字典序最小,前面的全都放 0,最后将满足条件的数拼在后面。

代码

#include<iostream>

using namespace std;

int T;

int main(){
    cin >> T;
    while (T--){
        int n, p, q, k;
        cin >> n >> p;
        if (2 * p + 1 > n){
            cout << -1 << endl;
            continue;
        }
        for (int i = 1; i <= n - (2 * p + 1); i++) cout << 0;
        for (int i = 1; i <= p; i++) cout << 10;
        cout << 1 << endl;
    }
    return 0;
}