[R70C]弱化 - 代码源竞赛平台

时空限制

1S/512M

题目描述

对于一个正整数 xx,若存在一个整数进制 bb(b≥2b\ge 2),使得 xx 在 bb 进制下的表示同时满足以下条件,则称 xx 为一个弱回文数:

  • 该表示是一个回文数;
  • 该表示至少包含两位数字。

形式化地,设 xx 在 bb 进制下的表示从高位到低位依次为 dm,dm−1,…,d0d_m,d_{m-1},\dots,d_0,其中 m≥1m\ge 1,1≤dm<b1\le d_m<b,且对于所有 0≤i≤m0\le i\le m,均有 0≤di<b0\le d_i<b。若

di=dm−id_i=d_{m-i}

对于所有 0≤i≤m0\le i\le m 均成立,则该表示是一个回文数。

给定一个正整数 xx,你需要判断 xx 是否为弱回文数。若是,还需要给出任意一个满足条件的进制 bb。

格式

输入格式

本题包含多组测试数据。

第一行包含一个正整数 TT,表示测试数据的组数。

接下来 TT 行,每行包含一个正整数 xx,表示该组测试数据中需要判断的正整数。

输出格式

对于每组测试数据:

  • 若 xx 不是弱回文数,输出一行一个字符串 No;
  • 若 xx 是弱回文数,先输出一行一个字符串 Yes,再输出一行一个整数 bb,表示你找到的满足条件的进制。

若存在多个满足条件的进制,输出任意一个即可。

样例

样例输入 #1

4
2
8
28
85

样例输出 #1

No
Yes
3
Yes
3
Yes
4

样例解释 #1

22 在 22 进制下表示为 (10)2(10)_2,不是回文数;在大于 22 的进制下均只包含一位数字,因此也不是弱回文数。

88 在 33 进制下表示为 (22)3(22)_3,2828 在 33 进制下表示为 (1001)3(1001)_3,8585 在 44 进制下表示为 (1111)4(1111)_4,因此它们都是弱回文数。

数据规模

注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。

子任务编号 分数 T≤T\le x≤x\le
11 5050 100100 10410^4
22 5050 10410^4 10910^9

对于 100%100\% 的数据,满足 1≤T≤1041\le T\le 10^4,1≤x≤1091\le x\le 10^9。