世界末日

    xiaoxiao2021-03-25  99

    描述

    世界末日马上就要来临了,当然,每个人都想买到船票,但是由于船票有限,因此需要回答对一个问题才能买票。问题是这样的:给你一个数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]; } }

    转载请注明原文地址: https://ju.6miu.com/read-24405.html

    最新回复(0)