题解 | #分苹果#

分苹果

http://www.nowcoder.com/practice/a174820de48147d489f64103af152709

全是暴力,没有技巧

#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
    int n;
    scanf("%d", &n);
    int nums[n];
    for(int i=0; i<n; i++)
    {
        scanf("%d", &nums[i]);
    }
    int sum = 0;
    for(int i=0; i<n; i++)
    {
        sum += nums[i];
    }
    //tag标记,是否有输出-1的情况;count计数
    int tag = 0;
    int count = 0;
    //如果sum不能被n整除则说明无法平分
    if(sum%n != 0)    
    {
        printf("%d\n", -1);
        tag = 1;
    }
    else
    {
        int average = sum/n;
        //遍历数组,只记录苹果比较少的情况
        for(int i=0; i<n; i++)
        {
            if(nums[i] < average)
            {
                //因为每次只能取2个,如果缺少的苹果不能被2整除,说明无法平分
                if((average - nums[i])%2 != 0 )
                {
                    printf("%d\n", -1);
                    tag = 1;
                    break;
                }
                else 
                {
                    count = count + (average-nums[i])/2;
                }
            }
            else if(nums[i] > average)
            {
                if((nums[i] - average)%2 != 0)
                {
                    printf("%d\n", -1);
                    tag = 1;
                    break;
                }
            }
        }
        if(tag == 0)    printf("%d\n", count);
    }

    return 0;
}
全部评论

相关推荐

伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
我见java多妩媚:大外包
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务