Duyên hải Bắc Bộ 2014 - Tính hàm

Xem dạng PDF

Gửi bài giải

Điểm: 20,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Dãy Fibonacci là dãy vô hạn các số tự nhiên bắt đầu bằng hai phần tử 1 và 1, các phần tử sau đó được thiết lập theo quy tắc mỗi phần tử bằng tổng hai phần tử trước nó. Công thức truy hồi của dãy Fibonacci như sau: $$Fibonacci(n) = \begin{cases} 1 & \text{nếu } n = 1 \\ 1 & \text{nếu } n = 2 \\ Fibonacci(n-1) + Fibonacci(n-2) & \text{nếu } n > 2 \end{cases}$$

Xét hàm ~f(x, y)~ sau: $$f(x, y) = \begin{cases} y & \text{nếu } x = 0 \\ x & \text{nếu } y = 0 \\ \alpha \times f(x-1, y) + \beta \times f(x, y-1) + g(x, y) & \text{nếu } x \neq 0 \text{ và } y \neq 0 \end{cases}$$ Trong đó, ~g(x, y)~ là ước số chung lớn nhất của ~Fibonacci(x)~ và ~Fibonacci(y)~.

Yêu cầu: Cho 4 số nguyên không âm ~x, y, \alpha, \beta~ và số nguyên dương ~B~, hãy tính hàm ~f(x, y) \pmod B~.

Input

  • Dòng đầu tiên ghi số nguyên dương ~K~ là số lượng bộ dữ liệu. Tiếp đến là ~K~ dòng, mỗi dòng chứa 5 số nguyên ~x, y, \alpha, \beta, B~ tương ứng với một bộ dữ liệu. Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách.

Output

  • Gồm ~K~ dòng, mỗi dòng ghi một số nguyên là giá trị hàm ~f~ tính được tương ứng với bộ dữ liệu.

Sample Input 1

3
0 10 1 1 100
10 0 1 1 100
1 1 1 1 100

Sample Output 1

10
10
3

Subtasks

  • Subtask 1 (20 điểm): ~x, y \le 10; \alpha, \beta, B \le 10^6~.
  • Subtask 2 (20 điểm): ~x, y \le 50; \alpha, \beta, B \le 10^9~.
  • Subtask 3 (15 điểm): ~x, y \le 50; \alpha, \beta, B \le 10^{18}~.
  • Subtask 4 (15 điểm): ~x, y \le 500; \alpha, \beta, B \le 10^{18}~.

Bình luận

Hãy đọc nội quy trước khi bình luận.


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