问题 5566 --死循环

5566: 死循环

题目描述

有一段C++代码如下: ```` i = a; while (i != b) i += c; ```` 代码的语义是一个循环变量 $i$ 开始于 $a$,当且仅当它等于 $b$ 时退出循环,每次循环完成时 $i$ 会增加 $c$。 规定所有变量在内存中都是用 $k$ 位无符号二进制表示的,加法溢出后效果相当于取 $2^k$ 的模。请模拟这段程序,统计执行了多少次循环?

输入

四个整数:$a$,$b$,$c$ 和 $k$。

输出

+ 如果循环可以结束,输出循环次数; + 否则输出 `Inf`。

样例输入输出

输入#1 复制
3 3 2 16 
输出#1 复制
0
输入#2 复制
3 7 2 16
输出#2 复制
2
输入#3 复制
7 3 2 16
输出#3 复制
32766
输入#4 复制
4 3 2 16
输出#4 复制
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说明:初值和目标相等,没有进入循环体
序号 标题 作者 发表时间 费用 订购数 操作