203.小苯的GCD
内存限制:256 MB
时间限制:1.000 S
题目描述
小苯有一个长度为n 的数组a。
他想要使得所有ai 的最大公因子是一个素数。即gcd(a1,a2...an) 是一个素数。他可以对数组进行任意次操作。
具体的:每次操作,他会选择i, j两个下标,同时执行:
ai = ai+2, aj=aj-2
请问他是否有可能在任意次操作内将数组变成符合要求的,如果可以,请输出所有可能的最大公因数。
注意,这里要保证aj 在操作后仍然是正数,即不能选择 aj<=2。
输入
输入包含两行。
第一行一个正整数n (2 <= n <= 2*10^5) 表示数组长度。第二行n个正整数 ai (1 <= ai <= 10^6) 表示这个数组。
输出
输入包含一行或两行。
如果可以输出 YES,否则输出 NO。
如果答案为YES,则第二行按照升序输出所有可行的数组gcd。如为NO, 则没有第二行。
样例输入 复制
4
1 3 5 9
样例输出 复制
YES
3
提示
可以选择一次 i=1, j=3,这样一来数组变成:[3, 3, 3, 9],gcd=3。
可以证明只有3 这一个答案。
时间限制: c/c++/go: 1s; 其他语言: 5s.