Codeforces Round #104 (Div.2) 补题

B. Lucky Mask

https://codeforces.com/problemset/problem/146/B 

数据很小,暴力即可

#include <bits/stdc++.h>

using namespace std;

int a, b;
string k;
bool check(int s)
{
    string w;
    int tmp = s;
    while(tmp) {
        w.push_back(tmp%10 + '0');
        tmp /= 10;
    }
    reverse(w.begin(), w.end());
    int c = 0, l = w.size(), r = k.size();
    string ss;
    for(int i = 0;i < l; ++ i) {
        if((w[i] == '4' || w[i] == '7')) {
            ss.push_back(w[i]);
        }
    }
    if(ss.size() == r && ss == k) return true;
    return false;
}
int main()
{
    cin >> a >> b;
    int tmp = b;
    while(tmp) {
        k.push_back(tmp%10 + '0');
        tmp /= 10;
    }
    reverse(k.begin(), k.end());
    for(int i = a + 1;i <= 10000010; ++ i) {
        if(check(i)){
            cout << i << endl;
            return 0;
        }
    }
//    puts("YES");
}

D. Lucky Number 2

分类讨论...各种情况,对着cf上的输入数据才ac

#include <bits/stdc++.h>

using namespace std;

int a, b, c, d, f;
string s;
int main()
{
    cin >> a >> b >> c >> d; // 4, 7, 47, 74
    if(abs(c - d) > 1) {
        puts("-1");
        return 0;
    }
    if(d > c) f = 1;
    if(c == d) {
        a -= c;
        b -= c;
        if(a < 0 || b < 0) {
            puts("-1");
            return 0;
        }
        if(a - 1 == -1) {
            if(b - 1 == -1) {
                puts("-1");
                return 0;
            }
            while(d) cout << "74", d --;
            while(b) cout << "7", b --;
            return 0;
        }
        a --;
        while(a) cout << '4', a --;
        while(c) cout << "47", c --;
        while(b) cout << "7", b --;
        putchar('4');
        return 0;
    }
    if(f == 0) {
        a -= c; // 47 用去的a, b 
        b -= c;
         d -= (c - 1); // 47 构成的74, c >= 1 
        if(a < 0 || b < 0) {
            puts("-1");
            return 0;
        }
        // cnt(47) >= cnt(74);
        while(a) putchar('4'), a --;
        while(c) cout << "47", c --;
        if(d) {
            while(b) putchar('7'), b --;
            putchar('4');
        } else {
            while(b) putchar('7'), b --;
        }
    } else {
    //    cnt(74) - cnt(47) == 1;
        a -= d;
        b -= d;
        if(a < 0 || b < 0) {
            puts("-1");
            return 0;
        }
        printf("74"), d --;    
        while(a) printf("4"), a --;
        while(d > 1) printf("74"), d --;
        while(b) printf("7"), b --;
        while(d) printf("74"), d --;
    }
}
//747477777744444
//774744
原文地址:https://www.cnblogs.com/DefineWaAc/p/14150871.html