trang chủ / đề bài / voi25_pnum

Số nguyên dương

Đề bài

Mô tả

Thầy giáo Lê rất yêu thích các bài toán số học và dãy số. Thầy định nghĩa trọng số của một số nguyên dương X (ký hiệu là W(X)) như sau:

  • Đầu tiên, thầy Lê biểu diễn X thành dãy các chữ số của nó trong hệ cơ số 10, thu được dãy X1,X2,…,XN với N là số chữ số của X;
  • Nếu dãy chữ số của X có chứa hai phần tử đứng cạnh nhau có tổng chia hết cho 5, nghĩa là tồn tại i∈{1,2,…,N−1} sao cho (Xi+Xi+1)mod5=0, thì W(X)=0;
  • Ngược lại, W(X) chính là số lượng dãy con gồm các phần tử liên tiếp trong dãy chữ số của X mà có kết quả XOR các phần tử bằng 0. Cụ thể, W(X) là số lượng cặp (i,j) thoả mãn 1≤i≤j≤N và Xi⊕Xi+1⊕…⊕Xj=0, với ⊕ là phép toán XOR giữa hai số tự nhiên.

Nhắc lại, với hai số tự nhiên a và b, phép toán a⊕b là phép toán XOR từng bit tương ứng của a và b trong biểu diễn hệ nhị phân của chúng.

Ví dụ:

  • W(1234)=0 vì chứa hai chữ số 2 và 3 cạnh nhau có tổng chia hết cho 5;
  • W(122103)=5 vì không có hai chữ số nào cạnh nhau có tổng chia hết cho 5, đồng thời dãy chữ số của nó có 5 dãy con gồm các phần tử liên tiếp là (2,2), (1,2,2,1), (1,2,2,1,0), (0) và (2,1,0,3) có XOR các phần tử bằng 0;
  • W(3456)=0 vì dãy chữ số của nó không có dãy con nào có XOR các phần tử bằng 0.

Yêu cầu: Cho số nguyên dương k và các số nguyên dương L,H. Hãy tính tổng lũy thừa k của trọng số của tất cả các số nguyên dương nằm trong phạm vi [L,H], nghĩa là tính ∑X=LH(W(X))k.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên dương k là số lũy thừa trong tổng cần tính (1≤k≤2).
  • Dòng thứ hai chứa một số nguyên dương T là số lượng trường hợp test (1≤T≤50000).
  • Mỗi dòng trong số T dòng tiếp theo chứa hai số nguyên dương L và H mô tả một trường hợp test (1≤L≤H≤101000).

Dữ liệu bảo đảm tổng số chữ số của tất cả các số L và H trong một file dữ liệu vào không vượt quá 105. Các số trên cùng một dòng cách nhau bởi dấu cách.

Dữ liệu ra

Gồm T dòng, mỗi dòng chứa một số nguyên là phần dư của kết quả tìm được trong phép chia cho 1000000007 tương ứng với trường hợp test trong dữ liệu đầu vào.

Ràng buộc

  • 1≤k≤2; 1≤T≤50000.
  • 1≤L≤H≤101000.
  • Tổng số chữ số của tất cả các số L và H trong một file dữ liệu vào không vượt quá 105.

Subtasks

  • Subtask 1 (12% số điểm): T≤10 và H≤106.
  • Subtask 2 (12% số điểm): T≤10; H≤1018 và k=1.
  • Subtask 3 (12% số điểm): H≤1018 và k=1.
  • Subtask 4 (12% số điểm): k=1.
  • Subtask 5 (20% số điểm): T≤10; H≤109 và k=2.
  • Subtask 6 (16% số điểm): L là luỹ thừa của 10; H=10×L−1 và k=2.
  • Subtask 7 (16% số điểm): không có ràng buộc nào thêm.

Ví dụ

Input Output Giải thích
1
3
1 10
100 105
111239 111245
1
5
12
Trường hợp test thứ nhất: W(1)=W(2)=…=W(9)=0, W(10)=1, nên kết quả là 1. Trường hợp test thứ hai: W(100)=0, W(101)=2, W(102)=1, W(103)=1, W(104)=1, W(105)=0, nên kết quả là 0+2+1+1+1+0=5. Trường hợp test thứ ba: W(111239)=0, W(111240)=3, W(111241)=0, W(111242)=2, W(111243)=2, W(111244)=3, W(111245)=2, nên kết quả là 0+3+0+2+2+3+2=12.
2
3
1 10
100 105
111239 111245
1
7
30
Cùng các trọng số như ví dụ thứ nhất. Trường hợp test thứ nhất: 12=1. Trường hợp test thứ hai: 02+22+12+12+12+02=7. Trường hợp test thứ ba: 02+32+02+22+22+32+22=30.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0