답안 #732556

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
732556 2023-04-29T05:59:31 Z Programmer123 Weird Numeral System (CCO21_day1problem2) C++17
0 / 25
0 ms 212 KB
#include <bits/stdc++.h>
#define int long long int
#define IMPOSSIBLE 10000
std::set<int> digits;
int K, M;
std::unordered_map<int, int> answer;
int dp(int num) {
    if (answer.count(num)) return answer[num];
    if (digits.count(num)) {
        answer[num] = num;
        return num;
    }
    for (auto digit: digits) {
        int newNum = num - digit;
        if (newNum % K) continue;
        if (dp(newNum / K) == IMPOSSIBLE) continue;
        answer[num] = digit;
        return digit;
    }
    answer[num] = IMPOSSIBLE;
    return IMPOSSIBLE;
}
signed main() {
    int Q, D;
    std::cin >> K >> Q >> D >> M;
    for (int i = 0; i < D; ++i) {
        int a;
        std::cin >> a;
        if (a == IMPOSSIBLE) {
            assert(false);
        }
        digits.insert(a);
    }
    for (int _ = 0; _ < Q; ++_) {
        int number;
        std::cin >> number;
        if (dp(number) != IMPOSSIBLE) {
            std::stack<int> result;
            result.push(dp(number));
            number = (number - dp(number)) / K;
            while (number) {
                int digit = dp(number);
                assert(digit != IMPOSSIBLE);
                result.push(digit);
                number -= digit;
                number /= K;
            }
            while (!result.empty()) {
                std::cout << result.top() << " ";
                result.pop();
            }
            std::cout << std::endl;
        } else {
            std::cout << "IMPOSSIBLE" << std::endl;
        }
    }
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Expected integer, but "IMPOSSIBLE" found
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Expected integer, but "IMPOSSIBLE" found
2 Halted 0 ms 0 KB -