题目背景
小 W 喜欢分拆。
题目描述
小 W 定义了一种「良好的分拆」:
对于正整数 n,如果存在 n 个整数 (a1,a2,⋯,an) 使得 i=1∑nai=i=1∏nai=n,那么称 n 是「良好的」,而 (a1,a2,⋯,an) 是 n 的一个「良好的分拆」。
现在,小 W 给了你一些 n,他希望你求出这些 n 分别是不是「良好的」。如果是良好的,请任意输出一个 n 的「良好的分拆」。
输入格式
第一行一个整数 T,表示数据组数。
接下来 T 行,每行一个整数 n,表示小 W 的一个询问。
输出格式
对于每组数据,输出若干行。
如果 n 不是「良好的」,那么仅输出一行 NO
;
否则,第一行输出 YES
,接下来一行一个数 a,表示你的「良好的分拆」中有多少种不同的数,接下来 a 行,每行两个数 x,y,表示有 x 个 y。
3
1
2
5
YES
1
1 1
NO
YES
3
1 5
2 1
2 -1
提示
样例解释
n=1 时,(1) 是 1 的一个「良好的分拆」;
n=2 时,2 没有「良好的分拆」;
n=5 时,$5+1+1+(-1)+(-1)=5\times1\times1\times(-1)\times(-1)=5$,所以 (5,1,1,−1,−1) 是 5 的一个「良好的分拆」。
数据范围
本题不捆绑测试。
Subtask1(10pts):n=1,T=1000;
Subtask2(30pts):n≤104,T=100;
Subtask3(60pts):T=1000。
对于所有数据,1≤n≤109。
说明
本题带有 SPJ。
某个测试点获得满分,当且仅当对于这个测试点的所有 T 组数据,有:
- 第一行的答案相同。
- 如果第一行的答案为
YES
,则还要满足 1≤a≤20,1≤x≤n,∑y×x=∏yx=∑x=n。
为了便于 SPJ 的编写,允许有的 y 相同,同时请确保在输出文件末尾有且仅有一个换行。
SPJ 源码请到云剪贴板查看。