#S8U05P03. 周期倍率

周期倍率

周期倍率

难度:T2

【知识点:快速幂与基础模运算】

前置知识:本单元此前讲解的状态、边界与实现。

题目描述

从初始值 xx 开始,每个周期把当前值乘以 aa,再对 mm 取标准非负余数。求 kk 个周期后的余数;k=0k=0 时也输出 xx 对 mm 的标准余数。

输入格式

输入初始值xx、倍率aa、周期数kk、模数mm。每个周期把当前值乘aa,再对mm取标准余数。

规则说明

对正整数 mm 取标准余数,是取满足 0≤r<m0\le r<m 的整数 rr,使原数减去 rr 后能被 mm 整除。即使原数为负,结果也不能为负;例如 −2-2 对 55 的标准余数是 33。

输出格式

输出kk周期后的标准余数。

数据范围

0≤x,a≤1090\le x,a\le 10^9,0≤k≤10180\le k\le 10^18,1≤m≤1091\le m\le 10^9。

样例输入

0 1 0 1

样例输出

0

样例输入 2

5 3 2 7

样例输出 2

3

样例说明 2

第一周期得到 1515 对 77 的余数 11,第二周期得到 33。