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

Con đường dài

Đề bài

Mô tả

Một mê cung gồm n+1 căn phòng đánh số từ 1 đến n+1. Ban đầu một người đứng ở phòng 1 và muốn ra khỏi mê cung bằng cách tới được phòng n+1.

Mỗi phòng i (với 1in) có hai cổng dịch chuyển một chiều:

  • Cổng thứ nhất đưa từ phòng i sang phòng i+1.
  • Cổng thứ hai đưa từ phòng i sang phòng pi, trong đó 1pii.

Người này di chuyển theo quy tắc sau:

  • Mỗi khi bước vào một phòng, anh ta vẽ thêm một dấu chéo lên trần phòng đó. Ban đầu anh ta vẽ một dấu chéo lên trần phòng 1.
  • Giả sử anh ta đang ở phòng i và vừa vẽ dấu chéo. Nếu trần phòng hiện có một số lẻ dấu chéo thì anh ta dùng cổng thứ hai (tới phòng pi), ngược lại (số chẵn) anh ta dùng cổng thứ nhất (tới phòng i+1).

Hãy xác định số lần anh ta cần sử dụng cổng để tới được phòng n+1.

Dữ liệu vào

  • Dòng thứ nhất chứa số nguyên n.
  • Dòng thứ hai chứa n số nguyên p1,p2,,pn.

Dữ liệu ra

In ra một số nguyên duy nhất là số lần sử dụng cổng cần thiết. Do đáp số có thể rất lớn, hãy in ra phần dư của nó khi chia cho 109+7.

Ràng buộc

  • 1n103
  • 1pii

Ví dụ

Input Output Giải thích
2
1 2
4 Phòng 1: vẽ dấu (lẻ) tới p1=1. Phòng 1: vẽ dấu (chẵn) tới phòng 2. Phòng 2: vẽ dấu (lẻ) tới p2=2. Phòng 2: vẽ dấu (chẵn) tới phòng 3. Tổng cộng 4 lần.
4
1 1 2 3
20 Cần 20 lần sử dụng cổng để tới phòng 5.
5
1 1 1 1 1
62 Mọi cổng thứ hai đều quay về phòng 1 nên số bước tăng theo cấp số nhân, tổng cộng 62 lần.

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 1.26.3 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