VOI 19 Bài 3 - Số siêu đối xứng

Xem dạng PDF

Gửi bài giải

Điểm: 1,50 (OI)
Giới hạn thời gian: 1.5s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Nguồn bài:
Kỳ thi Học sinh giỏi Quốc gia 2019 - Ngày 1
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Lưu ý: Đọc input, output từ stdin/stdout

Một dãy các chữ số từ ~0~ đến ~9~ được gọi là dãy đối xứng nếu như đọc từ trái sang phải hay từ phải sang trái đều thu được kết quả giống nhau. Ví dụ như dãy rỗng và hai dãy ~010~, ~0110~ là các dãy đối xứng, còn các dãy ~123~, ~4449~ không phải là dãy đối xứng.

Với dãy ~S~ độ dài ~k~, các kí tự được đánh số từ ~1~ đến ~k~. Kí hiệu một dãy con của ~S~ gồm các kí tự liên tiếp từ vị trí ~a~ đến vị trí ~b~ là ~S(a, b)~ (giả thiết nếu ~a>b~ thì ~S(a, b)~ là dãy rỗng), dãy ~S~ được định nghĩa là dãy siêu đối xứng nếu đồng thời thỏa mãn các điều kiện sau:

  • ~S(1, k)~ là dãy đối xứng;
  • ~S(1, \left \lfloor k/2 \right \rfloor)~ là dãy đối xứng, trong đó kí hiệu ~\left \lfloor x \right \rfloor~ là số nguyên lớn nhất không vượt quá ~x~;
  • ~S(k - \left \lfloor k/2 \right \rfloor + 1, k)~ là dãy đối xứng.

Ví dụ các dãy ~0~, ~11~, ~22322~, ~454454~ là các dãy siêu đối xứng, còn dãy ~990099~ không phải là dãy siêu đối xứng.

Một dãy được gọi là gần siêu đối xứng nếu như tồn tại một cách hoán đổi vị trí các phần tử của nó để thu được một dãy siêu đối xứng. Đương nhiên, một dãy siêu đối xứng cũng đồng thời là một dãy gần siêu đối xứng.

Một số nguyên dương ~d~ được gọi là số gần siêu đối xứng nếu như coi biểu diễn thập phân của nó như một dãy các chữ số từ ~0~ đến ~9~ (không có trường hợp dãy bắt đầu bởi chữ số ~0~) thì dãy biểu diễn đó là một dãy gần siêu đối xứng. Lưu ý là sau khi hoán đổi vị trí các phần tử, dãy thu được có thể bắt đầu bởi chữ số ~0~. Ví dụ, ~d=9505000~ là số gần siêu đối xứng vì tồn tại một cách hoán đổi vị trí các phần tử của dãy các chữ số biểu diễn d thành một dãy siêu đối xứng ~0509050~.

Yêu cầu: Cho hai số nguyên dương ~p~ và ~q~ ~(p \leq q)~, hãy tìm số lượng các số nguyên gần siêu đối xứng nằm trong khoảng từ ~p~ đến ~q~ (khoảng bao gồm cả ~p~ và ~q~).

Input

Hai số nguyên ~p~ và ~q~ cách nhau bởi dấu cách.

Output

In ra duy nhất một số là phần dư của số lượng số gần siêu đối xứng tìm được trong phép chia cho ~10^9+7~.

Scoring

  • Có ~20\%~ số lượng test ứng với ~20\%~ số điểm của bài thỏa mãn điều kiện: ~1 \leq p \leq q \leq 10^5~;
  • ~30\%~ số lượng test khác ứng với ~30\%~ số điểm của bài thỏa mãn điều kiện: ~p=10^{k-1}~, ~q=10^k-1~, ~2 \leq k \leq 18~;
  • ~30\%~ số lượng test khác ứng với ~30\%~ số điểm của bài thỏa mãn điều kiện: ~1 \leq p \leq q \leq 10^{18}~;
  • ~20\%~ số lượng test còn lại ứng với ~20\%~ số điểm của bài thỏa mãn điều kiện: ~1 \leq p \leq q \leq 10^{50000}~.

Sample Input 1

1 100

Sample Output 1

19

Sample Input 2

3111120 3111125 

Sample Output 2

2

Giải thích

  • Ở ví dụ thứ nhất, các số gần siêu đối xứng là ~1~, ~2~, ~3~, ~4~, ~5~, ~6~, ~7~, ~8~, ~9~, ~11~, ~22~, ~33~, ~44~, ~55~, ~66~, ~77~, ~88~, ~99~, ~100~.
  • Ở ví dụ thứ hai, hai số gần siêu đối xứng là ~3111122~ và ~3111123~.

Bình luận

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



  • -11
    duyanh  đã bình luận lúc 20, Tháng 1, 2022, 8:29 chỉnh sửa

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -11
    ProTeam15  đã bình luận lúc 18, Tháng 1, 2022, 15:16

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -12
    HuyNhay  đã bình luận lúc 18, Tháng 1, 2022, 9:44 chỉnh sửa

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -13
    CaiWinDao  đã bình luận lúc 18, Tháng 1, 2022, 9:01 chỉnh sửa

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -6
    ndpqx  đã bình luận lúc 18, Tháng 9, 2021, 3:49

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -8
    ankhang277  đã bình luận lúc 18, Tháng 9, 2021, 3:37

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.