Dãy Lipon

Xem PDF

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Lipon là một cậu bé đam mê toán học, cậu rất muốn khám phá ra nhưng điều mới lạ trong toán học. Một ngày nọ, cậu khám phá ra dãy số Fibonacci, Lipon càng tìm hiểu sâu hơn thì biết được dãy số ấy được tạo ra bởi Leonardo Fibonacci. Cậu ấy liền nghĩ ra một dãy số và đặt tên nó là dãy số Lipon.

Dãy số Lipon được định nghĩa như sau:

  • \(L_1\) \(=\) \(14\)
  • \(L_i\) \(=\) \((L_{i-1} * 2 + 2) \bmod 1000\)

Khi đi học lại, Lipon giới thiệu cho Anfel (người bạn thân nhất của Lipon) thì Anfel đã thử thách Lipon. Anfel cho Lipon 2 số tự nhiên \(a\)\(b\) và bảo Lipon tính tổng các số từ số thứ \(a\) đến số thứ \(b\) của dãy số Lipon trong vòng 1 giây. Vì số \(a\) và số \(b\) mà Anfel cho quá lớn nên Lipon không thể tính nhanh được, cậu nhờ các coder (trong đó có bạn) để giải hộ thử thách của Anfel.

Vì là một coder tốt bụng, bạn hãy giúp Lipon nhé.

Input

  • Dòng đầu tiên chứa hai số tự nhiên \(a\)\(b\) \((a\leq b\leq 10^{16})\)

Output

  • Dòng đầu tiên là kết quả tìm được

Subtasks

  • Subtask 1: \((a\leq b\leq 10^{5})\) (40% số điểm)
  • Subtask 2: \((a\leq b\leq 10^{16})\) (60% số điểm)

Example

Test 1
Input
1 10
Output
1348

Bình luận


  • 0
    huyphanvanquoc    7:47 p.m. 4 Tháng 5, 2024

    a,b=map(int,input().split())
    s=[14]
    so=14
    t=0
    for i in range(b):
    so=(so*2+2)%1000
    s.append(so)
    for i in range(a-1,b):
    t=t+s[i]
    print(t)

    1 phản hồi

    • 0
      mapubzz    9:32 p.m. 30 Tháng 4, 2024

      sao kết quả của test lại ra 1348 , mình tưởng mod 1000 thì kết quả phải nhỏ hơn 1000 chứ

      1 phản hồi