3628 - 分苹果0

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

Jim买了n个苹果给Jack和Sola,现在他想给这两个朋友分苹果。每个苹果不是重100g就是重200g,当然Jim不想

得罪任何一个朋友,因此Jim给两个人苹果的质量必须是一样的,在没有水果刀的情况下,请告诉他,这些苹果

可以被均分吗?

题目输入

第一行:n (1..100)代表苹果的数量

第二行:w1,w2,...wi:wi代表第i个苹果的质量。

题目输出

可以均分输出Yes否则输出No。

输入/输出样例

输入格式

3
100 200 100

输出格式

Yes

C语言解答

#include <stdio.h>
int main()
{
	int n,a[10000],i,j,sum;
	while(scanf("%d",&n)!=EOF)
	{
		sum=0;
		for(i=0;i<n;i++)
		scanf("%d",&a[i]);
		for(i=0;i<n;i++)
		{
			if(a[i]==100)
			sum+=1;
			if(a[i]==200)
			sum+=2;
		}
		if(sum%2==0)
		printf("Yes\n");
		else
		printf("No\n");
	}
	return 0;
}

C++解答

#include <bits/stdc++.h>
using namespace std;
int cmp(int a,int b)
{
	return a>b;
}
int main()
{
	int n;
	while(~scanf("%d",&n)){
		int a[105];
		int sum=0;
		int one=0;
		for (int i=0;i<n;i++){
			scanf("%d",&a[i]);
			a[i]=a[i]/100;
			sum+=a[i];
			if (a[i]==1) one++;
		}
		
		int avr=sum/2;
		
		if (avr!=sum-avr){
			printf("No\n");
			continue;
		}
		
		sort(a,a+n,cmp);
		
		int ss=0;
		while(avr>=a[ss]&&a[ss]==2){
			avr-=a[ss];
			ss++;
		}
		
		if (avr<=one) printf("Yes\n");
		else printf("No\n");
		
	}
	return 0;
}