#P1403. Divisibility Testing! Wow!
Divisibility Testing! Wow!
整除性判定规则
题目描述
除了直接进行除法之外,通常还可以通过一些规则判断一个数能否被另一个数整除。例如,在十进制中:
-
如果一个数的最右边一位能被 整除,那么这个数能被 整除。例如,、 和 都能被 整除。
-
如果一个数的最右边两位组成的数能被 整除,那么这个数能被 整除。例如,、 和 都能被 整除。
-
如果一个数的各位数字之和能被 整除,那么这个数能被 整除。例如, 能被 整除,因为
对 也存在类似规则。
判断一个数能否被 整除时,可以从右向左每两位分成一组,并将所有分组对应的数相加。例如:
能被 整除,因为
-
如果从右向左计算奇数位置数字之和与偶数位置数字之和的差,并且该差能被 整除,那么原数能被 整除。例如, 能被 整除,因为
-
判断一个数能否被 整除时,可以从右向左每三位分成一组,再对这些分组交替加减。例如, 能被 整除,因为
现在给定进制 和除数 ,你需要自动寻找上述类型的整除性判定规则。
设一个 进制整数从右向左每 位分成一组,得到:
其中 是最右边的分组。需要寻找以下三类规则:
1. 最右端规则
如果一个数能否被 整除,只取决于其最右边 位组成的数,则输出:
Rightmost k
这类规则成立的条件等价于:
2. 分组求和规则
如果一个数能否被 整除,可以通过判断
能否被 整除来确定,则输出:
Add all k
这类规则成立的条件等价于:
3. 分组交替加减规则
如果一个数能否被 整除,可以通过判断
能否被 整除来确定,则输出:
Alternate k change sign
这类规则成立的条件等价于:
对于每一类规则,只考虑:
如果同一类规则存在多个可行的 ,输出其中最小的 。
如果能找到多类规则,应按照以下顺序输出:
RightmostAdd allAlternate
如果三类规则都不存在,则输出:
condition not found.
注意:这里只考虑上述单一规则,不考虑将多种规则组合使用。例如,在十进制中,分别利用 和 的整除规则可以判断一个数能否被 整除,但这种复合规则不在本题考虑范围内。
输入格式
第一行包含一个整数 ,表示测试数据组数。
接下来 行,每行包含两个整数 和 :
- 表示所使用的进制;
- 表示需要寻找整除规则的除数。
数据范围:
输出格式
对于每组测试数据,输出所有能够找到的规则。
同一组数据中的多类规则按照题目规定的顺序逐行输出。
如果没有找到任何规则,输出:
condition not found.
相邻两组测试数据的输出之间必须有一个空行。
输出中的英文、大小写及空格必须与题目要求完全一致。
样例输入
7
10 3
10 99
10 2
10 4
10 5
10 11
10 7
样例输出
Add all 1
Add all 2
Rightmost 1
Rightmost 2
Rightmost 1
Add all 2
Alternate 1 change sign
Add all 6
Alternate 3 change sign
@原题