HSG THPT Thanh Hóa 2022 - Mật Mã

View as PDF

Submit solution


Points: 0.15 (partial)
Time limit: 1.0s
Memory limit: 256M
Input: MATMA.INP
Output: MATMA.OUT

Author:
Problem type
Allowed languages
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Trên một vách đá có ghi rất nhiều các con số bí ẩn mà chúng có mối liên hệ với số ~30~. Sau một thời gian nghiên cứu, các chuyên gia đã tìm được cách giải mã các số đó như sau: Hoán vị các chữ số của số bí ẩn để thu được một bội số lớn nhất của ~30~.

Hãy viết chương trình để giúp các chuyên gia giải mã các số bí ẩn đó.

Input

Cho trong tệp MATMA.INP gồm một dòng duy nhất chứa số nguyên dương ~N~, với ~N~ có tối đa ~10^7~ chữ số là số cần giải mã.

Output

Ghi ra tệp MATMA.OUT một số nguyên duy nhất, là số lớn nhất chia hết cho ~30~, tìm được bằng cách hoán vị các chữ số của ~N~. Nếu không tìm thấy thì đưa ra ~-1~ (âm một).

Sample Input 1

1002

Sample Output 1

2100

Sample Input 2

12498567859

Sample Output 2

-1

Notes

  • Ở ví dụ đầu tiên, số ~2100~ là hoán vị lớn nhất của số ~1002~ và chia hết cho ~30~.

  • Ở ví dụ thứ hai, không tồn tại số hoán vị nào chia hết cho ~30~.


Comments

Please read the guidelines before commenting.



  • 0
    HieuTrong  commented on Nov. 19, 2024, 7:13 a.m.

    include <bits/stdc++.h>

    using namespace std;

    int a[10000007],n; long long t=0,d=0;

    int main() { string s; cin >> s; for (int i = 0; i < s.size(); i++) { a[i] = s[i] - '0'; } n=s.size(); sort(a,a+n,greater<int>()); for(int i=0;i<n;i++) { t+=a[i]; if(a[i]==0) d++; } if(t%3==0 && d>0) { for(int i=0;i<n;i++) { cout<<a[i]; } } else { cout<<-1; } return 0; }

    vì sao em code này ko ra ạ


  • 0
    hoduckhoinguyen09  commented on Sept. 16, 2024, 9:42 a.m. edited

    .


  • 10
    mai_mai_1_tink_iu  commented on Feb. 6, 2024, 4:55 a.m. edited

    Cách giải:

    Một hoán vị không thể chia hết cho 30 nếu nó không chia hết cho 3, 2 và 5.

    Để chia hết cho 2 và 5 thì trong hoán vị đó phải có số 0.

    Kết quả là số N sau khi sort giảm dần.