3628 - 分苹果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; }