描述
世界末日马上就要来临了,当然,每个人都想买到船票,但是由于船票有限,因此需要回答对一个问题才能买票。问题是这样的:给你一个数n (1 <= n <= 10000),之后给n个正整数 (<=10000),问在这n个数中是否存在一些数的和是n的倍数。
输入
多组测试数据(最多100组)。首先输入一个数n,然后输入n个数。
输出
如果能找到一些数的和是n的倍数,输出"YES",否则输出"NO"。
样例输入
5
5 3 6 7 9
样例输出
YES
public static void main(String[] args){ Scanner scan=new Scanner(System.in); //while(scan.hasNext()){ int a=scan.nextInt(); int[] b=new int[a]; for(int i=0;i<a;i++){ b[i]=scan.nextInt(); } int sum=0; for(int i=0;i<b.length;i++){ sum+=b[i]; } for(int i=1;i<=b.length;i++){ if(isYes!=1){ recursion(b,0,0,i,a); }else{ System.out.println("YES"); break; } } //} } static int sum; static int isYes; //d是判断最多几层 //c是下一次循环开始的点 //e是除以的数 //b是现在是底几层 public static void recursion(int[] a,int b,int c,int d,int e){ if(isYes==1){ return; } if(b+1==d){ if(sum%e==0){ isYes=1; } return; } for(int i=c;i<a.length;i++){ if(isYes==1){ return; } sum+=a[i]; recursion(a,b+1,i,d,e); sum-=a[i]; } }