trang chủ / đề bài / arrquery

Truy vấn trên mảng

Đề bài

Mô tả

Cho một mảng a gồm n số nguyên dương, mỗi phần tử không vượt quá n.

Bạn cần xử lý q truy vấn trên mảng này. Mỗi truy vấn gồm hai số p và k. Trong mỗi truy vấn, ta thực hiện lặp lại thao tác sau: thay p bằng p+ap+k. Thao tác được lặp cho đến khi p trở nên lớn hơn n. Đáp án của truy vấn là số thao tác đã thực hiện.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n.
  • Dòng thứ hai chứa n số nguyên — các phần tử của mảng a.
  • Dòng thứ ba chứa số nguyên q.
  • q dòng tiếp theo, mỗi dòng chứa hai số p và k tương ứng với một truy vấn.

Dữ liệu ra

In ra q số nguyên, mỗi số trên một dòng: số thứ i là đáp án của truy vấn thứ i.

Ràng buộc

  • 1≤n≤105
  • 1≤ai≤n với mọi i từ 1 đến n
  • 1≤q≤105
  • 1≤p,k≤n

Ví dụ

Input Output Giải thích
3
1 1 1
3
1 1
2 1
3 1
2
1
1
Truy vấn 1 (p=1,k=1): sau thao tác thứ nhất p=1+a1+1=3, sau thao tác thứ hai p=3+a3+1=5>3. Vậy có 2 thao tác.
Truy vấn 2 (p=2,k=1): p=2+a2+1=4>3 ngay sau thao tác đầu, đáp án 1.
Truy vấn 3 (p=3,k=1): p=3+a3+1=5>3, đáp án 1.
10
3 5 4 3 7 10 6 7 2 3
10
4 5
2 10
4 6
9 9
9 2
5 1
6 4
1 1
5 6
6 4
1
1
1
1
1
1
1
2
1
1
Với truy vấn 8 (p=1,k=1): p=1+a1+1=5, rồi p=5+a5+1=13>10. Vậy 2 thao tác. Các truy vấn còn lại đều vượt n chỉ sau một thao tác.

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