//解题思路:容易知道n为9的整数倍时,设倍数为x,则必须满足1~9每个数字的个数都是x个 // 若n=9*x+y,即多出y个多余的位置,则这多余的y个数不能重复 // 因为可随意调整顺序,保证前面x组1~9的前y个数和最后多出来的y个数顺序一致即可满足要求 //代码思路:设数组num[9],每个下标正好对应一个数,统计每个数字出现的个数 // 计算n/9和n%9,数组num整体减去n/9,循环判断数组元素是否大于0 // 有小于0的元素说明该元素个数不足返回NO,都大于0则统计剩余1的个数,若等于n%9,则打印YES,否则NO import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n=in.nextInt(),i=0; int k=-n/9,l=n%9; //优化数组初始值全为-n/9,统计完数字个数若有小于0则返回NO int[] num={k,k,k,k,k,k,k,k,k}; while(i<n&&in.hasNext()){ int a=in.nextInt(); num[a-1]++; i++; } for(i=0;i<9;i++){ if(num[i]<0){ l=-1; break; } if(num[i]==1) l--; } if(l==0) System.out.print("YES"); else System.out.print("NO"); } }