#1608. Biến đổi số (INTTRANS)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một số nguyên khởi tạo x . Một quy trình biến đổi dữ liệu được thực hiện lặp lại đúng n bước. Quy tắc biến đổi tại mỗi bước như sau: Nếu giá trị hiện tại là v , giá trị mới sẽ được cập nhật bằng cách lấy v nhân với tham số A , sau đó cộng thêm tham số B .

Nói cách khác, ta có dãy biến đổi:

  • Giá trị ban đầu: val_0 = x
  • Sau bước 1: val_1 = val_0 \times A + B
  • Sau bước 2: val_2 = val_1 \times A + B
  • ...
  • Sau bước n : val_n = val_{n-1} \times A + B

Hãy tính giá trị val_n sau khi quy trình kết thúc. Vì kết quả có thể rất lớn, hãy in ra phần dư của nó khi chia cho 10^9 + 7 .

Dữ liệu:

  • Dòng duy nhất chứa bốn số nguyên A, B, n x ( 1 \le A, B, x \le 10^9 , 1 \le n \le 10^{18} ) — tương ứng với hệ số nhân, hệ số cộng, số bước thực hiện và giá trị khởi tạo.

Kết quả:

  • In ra số nguyên duy nhất là kết quả của giá trị cuối cùng sau n bước biến đổi, lấy theo modulo 10^9 + 7 .

Ví dụ:

Dữ liệu:

3 4 1 1

Kết quả:

7

Dữ liệu:

3 4 2 1

Kết quả:

25

Dữ liệu:

3 4 3 1

Kết quả:

79

Giới hạn:

  • Subtask 1 (30% số điểm): n \le 10^6 .

  • Subtask 2 (20% số điểm): A = 1 .

  • Subtask 3 (20% số điểm): B = 1 .

  • Subtask 4 (30% số điểm): Không có ràng buộc bổ sung.