CF1912D.Divisibility Test

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Daisy 最近学习了整数的整除规则,并对此产生了浓厚的兴趣。她学到的其中一个测试是关于 33 的整除性。你可以将一个十进制数的所有数字相加,然后检查所得的和是否能被 33 整除。此外,数字之和与原数在模 33 意义下同余——即模 33 的余数保持不变。例如,75≡7+5(mod3)75 \equiv 7 + 5 \pmod 3。Daisy 对这种余数保持的整除性测试尤其感兴趣。

她还学到了更多类似的十进制(以 1010 为底的整数)整除性测试:

  • 检查能否被 1111 整除时,计算数字的交错和。从最后一位(最低位)开始,奇数位(最后一位、倒数第三位等)上的数字相加,偶数位(倒数第二位、倒数第四位等)上的数字相减,得到的和与原数在模 1111 意义下同余。例如,123≡1−2+3(mod11)123 \equiv 1 - 2 + 3 \pmod{11}。
  • 检查能否被 44 整除时,只需保留最后两位数字。它们的值与原数在模 44 意义下同余。例如,876543≡43(mod4)876543 \equiv 43 \pmod 4。
  • 检查能否被 77 整除时,计算每组三位数字的交错和。例如,4389328≡4−389+328(mod7)4389328 \equiv 4 - 389 + 328 \pmod 7。

在其他进制下也可以找到类似的测试方法。例如,对于八进制数(以 88 为底),检查能否被 55 整除时,计算每组两位数字的交错和。例如,12348≡−128+348(mod5)1234_8 \equiv -12_8 + 34_8 \pmod 5。

Daisy 想要为给定的进制 bb 找到类似的规则。她对三种类型的整除性规则感兴趣:

  • 类型 1 —— 取一个以 bb 为底的整数的最后 kk 位数字。
  • 类型 2 —— 取一个以 bb 为底的整数,每 kk 位数字分为一组,对各组求和。
  • 类型 3 —— 取一个以 bb 为底的整数,每 kk 位数字分为一组,对各组求交错和(正负交替相加)。

并非总能找到这样的整除性规则。例如,在十进制下,没有关于 66 的这种测试,尽管存在其他测试 66 的方法。

给定进制 bb 和模数 nn,Daisy 想知道存在上述哪种类型的整除性测试,并且希望找到最小的分组大小 kk。

输入格式

输入包含若干组测试数据。第一行包含一个整数 tt,表示测试组数。接下来的 tt 行,每行描述一组测试。

每组测试包含两个整数 bb 和 nn,分别表示进制和模数(b,n≥2b, n \ge 2)。所有输入中 bb 的总和不超过 10610^6,所有 nn 的总和也不超过 10610^6。

输出格式

输出 tt 行,每行对应输入中的一组测试。对于每组测试,若不存在对应的整除性测试,输出一个整数 00。否则,输出两个整数 aa 和 kk,其中 aa 表示整除性测试的类型(1、2 或 3),kk 表示分组的位数,且 kk 是所有可能的整除性测试中最小的。

输入输出样例

  • 输入#1

    6
    10 3
    10 11
    10 4
    10 7
    8 5
    10 6

    输出#1

    2 1
    3 1
    1 2
    3 3
    3 2
    0

说明/提示

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页