ĐỔI SỐ 2

Xem dạng PDF

Gửi bài giải

Điểm: 5,00
Giới hạn thời gian: 2.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C++

Vào một buổi sáng, rất tình cờ Nam nhìn thấy một số nguyên dương N trên đường từ nhà đến trường. Vì Nam rất thích số 90 nên Nam muốn biến đổi số N thành số M có dạng là số lớn nhất và là bội của số 90 bằng cách thay đổi vị trí của các chữ số trong số N mà Nam nhìn thấy.

Yêu cầu: Hãy trợ giúp Nam bằng cách viết một chương trình tìm số  M (nếu nó tồn tại).

Dữ liệu:

- Chứa duy nhất số nguyên N, số N có tối đa là 105 chữ số.

Kết quả:

- Đưa ra số M vừa tìm được. Nếu không tồn tại M thì in ra -1.

Ví dụ:

Input

108

Output

810

Input

2931

Output

-1


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    vito120400  đã bình luận lúc 6, Tháng 1, 2024, 7:37

    code bài này nha cả nhà #include <iostream>

    include <vector>

    include <algorithm>

    int main() { std::string N; std::cin >> N;

    // Kiểm tra xem số N có thể biến đổi thành số bội của 90 không
    int sumDigits = 0;
    bool hasZero = false;
    for (char digit : N) {
        int num = digit - '0';
        sumDigits += num;
        if (num == 0) {
            hasZero = true;
        }
    }
    
    // Nếu tổng chữ số không chia hết cho 3 hoặc không có chữ số 0, không tìm được số M
    if (sumDigits % 3 != 0 || !hasZero) {
        std::cout << "-1" << std::endl;
        return 0;
    }
    
    // Sắp xếp các chữ số của N theo thứ tự giảm dần
    std::sort(N.rbegin(), N.rend());
    
    // In ra số lớn nhất nếu nó là bội của 90, ngược lại in -1
    if (N.back() == '0') {
        std::cout << N << std::endl;
    } else {
        std::cout << "-1" << std::endl;
    }
    
    return 0;
    

    }