Bài 2: Số mềm (TS10 Vĩnh Phúc thi thử - 2026)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 800 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

An có hứng thú với các số nguyên dương có tính chất: trong biểu diễn thập phân của số, hai chữ số liền kề chênh lệch không quá \(1\). An gọi các số như vậy là các số mềm.

Với một số mềm có \(n + 1\) chữ số, An mã hoá nó bằng bộ đôi: chữ số bắt đầu \(d\) và xâu \(S\) độ dài \(n\) chỉ gồm các ký tự +, -, =. Khi đó số mềm được xác định như sau:

  • Chữ số đầu tiên là \(d\).
  • Xét lần lượt các ký tự trong xâu:
    • Nếu là +, chữ số tiếp theo lớn hơn chữ số trước đó \(1\) đơn vị.
    • Nếu là -, chữ số tiếp theo nhỏ hơn chữ số trước đó \(1\) đơn vị.
    • Nếu là =, chữ số tiếp theo bằng chữ số trước đó.

An đã quên mất \(d\), chỉ nhớ xâu \(S\). Hãy giúp An tìm số mềm nhỏ nhất có xâu mã hoá là \(S\) hoặc chỉ ra rằng An nhớ nhầm xâu \(S\).

Input

  • Một dòng duy nhất chứa xâu \(S\) độ dài nhỏ hơn \(100\), chỉ gồm các ký tự: +, -, =.

Output

  • In ra số mềm tìm được (các chữ số liền nhau, không có khoảng trắng, chữ số đầu tiên khác \(0\)).
  • Nếu không tồn tại số thỏa mãn (An nhớ nhầm xâu mã hoá), in ra \(0\).

Example

Test 1

Input
+--+=+
Output
1210112
Note

Bắt đầu từ \(1\): + \(\to 2\); - \(\to 1\); - \(\to 0\); + \(\to 1\); = \(\to 1\); + \(\to 2\).

Test 2

Input
+++++++++
Output
0
Note

Dù bắt đầu từ chữ số nào cũng sẽ vượt quá \(9\).

Scoring

  • Subtask \(1\) (\(50\%\) số điểm): Xâu \(S\) có độ dài không vượt quá \(6\).
  • Subtask \(2\) (\(50\%\) số điểm): Không có ràng buộc bổ sung.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.