题目描述
有一段C++代码如下:
````
i = a;
while (i != b)
i += c;
````
代码的语义是一个循环变量 $i$ 开始于 $a$,当且仅当它等于 $b$ 时退出循环,每次循环完成时 $i$ 会增加 $c$。
规定所有变量在内存中都是用 $k$ 位无符号二进制表示的,加法溢出后效果相当于取 $2^k$ 的模。请模拟这段程序,统计执行了多少次循环?
输入
四个整数:$a$,$b$,$c$ 和 $k$。
输出
+ 如果循环可以结束,输出循环次数;
+ 否则输出 `Inf`。
样例输入输出
提示
+ 对于 $30\%$ 的分数,$1 \leq k \leq 10$;
+ 对于 $60\%$ 的分数,$1 \leq k \leq 30$;
+ 对于 $100\%$ 的分数,$1 \leq k \leq 60$;
+ $0\leq a, b, c < 2^k$
样例1说明:初值和目标相等,没有进入循环体