#iai20a1. 无尽的循环(Infinite Loop)

    ID: 4191 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>扩展欧几里得数论模运算GESP 5级

无尽的循环(Infinite Loop)

无尽的循环(Infinite Loop)

题目描述

有一段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 ≤ k ≤ 10;
  • 对于 60% 的分数,1 ≤ k ≤ 30;
  • 对于 100% 的分数,1 ≤ k ≤ 60;
  • 0 ≤ a, b, c < 2^k

知识点与难度

本题涉及的知识点从属于 GESP 5级,难度等级:⭐⭐⭐


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~2 样例
1 20 3~8 小规模 k≤10 / 特殊: a=b / c=0
2 15 9~11 Hack: 大k值溢出 / c与2^k不互素 / a=b=0
3 30 12~20 中规模 k≈30~50 / 大规模 k=60 压力
4 25 21~25 随机 k=1~60 回归