trang chủ / bài tập / nazarsum

Bài toán của Nazar

Đề bài

Mô tả

Xét hai tập số vô hạn: tập số lẻ dương (1,3,5,7,) và tập số chẵn dương (2,4,6,8,).

Ta viết ra một dãy số theo từng giai đoạn:

  • Giai đoạn 1: viết 1 số đầu tiên từ tập lẻ.
  • Giai đoạn 2: viết 2 số tiếp theo từ tập chẵn.
  • Giai đoạn 3: viết 4 số tiếp theo từ tập lẻ.
  • Giai đoạn 4: viết 8 số tiếp theo từ tập chẵn.
  • ...

Nói cách khác, ở mỗi giai đoạn (kể từ giai đoạn thứ hai) ta viết ra số lượng số gấp đôi giai đoạn trước, và luân phiên đổi tập được lấy số. Mỗi tập được lấy số một cách liên tục: mỗi khi đến lượt một tập, ta lấy tiếp những số chưa dùng của tập đó theo thứ tự tăng dần.

Mười số đầu tiên của dãy là: 1,2,4,3,5,7,9,6,8,10.

Đánh số các số trong dãy bắt đầu từ 1. Cho hai số nguyên lr, hãy tính tổng các số ở những vị trí từ l đến r. Kết quả có thể rất lớn, hãy in ra phần dư khi chia cho 109+7.

Dữ liệu vào

Một dòng chứa hai số nguyên lr.

Dữ liệu ra

In ra một số nguyên duy nhất — tổng các số ở vị trí từ l đến r, lấy phần dư khi chia cho 109+7.

Ràng buộc

  • 1lr1018

Ví dụ

Input Output Giải thích
1 3 7 Ba số đầu tiên của dãy là 1,2,4; tổng bằng 1+2+4=7.
5 14 105 Các số ở vị trí từ 5 đến 145,7,9,6,8,10,12,14,16,18; tổng bằng 105.
88005553535 99999999999 761141116 Tổng rất lớn nên chỉ in phần dư khi chia cho 109+7.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0