codeforces 478A.Initial Bet 解题报告

题目链接:http://codeforces.com/problemset/problem/478/A

题目意思:简单来说,就是初始化的时候,五个人的值都是 b,现在给出每个人最终的状态:就是经过互相给予后或少或多的值的情况,问是否能求出这样一个 b。

   好容易想到的方法是,求出已知的这五个数最终状态的值的总和sum,然后求出平均值avg,这个平均值如果能够求出,即无余数或者不足,那么就代表有答案了,这个答案就是求出的平均数了。

   不过.....这题有些地方比较阴险。如果好单纯地认为,sum % 5 != 0 就意味着无解(输出-1),那就中了圈套了(= =,我就是一个版)。首先这个 b 要是 positive number!即最开始的时候,五个人的值是: b b b b b (b > 0)。那么如果最终状态是 0 0 0 0 0 这个是不满足条件的,因为与初始值(b > 0)相违背(无论怎么互相给予都不可能滴!!!),此时输出 -1

    还有一点就是,如果很巧地,最终状态是 x x x x x,且 x == b 的时候,是输出 b 的值,而不是无解(又中奖了)。。。最后琴晚怂恿舍友陪我打比赛(来不及注册,codeforces变成 codeforge(我以为她拼对的)),有点分心,最终结果就...呵呵了...

   

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cstring>
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     int a, b, c, d, e, ans;
10     while (scanf("%d%d%d%d%d", &a, &b, &c, &d, &e) != EOF)
11     {
12         int sum = a + b + c + d + e;
13         if (sum % 5 == 0)
14             ans = sum / 5;
15 
16         printf("%d
", sum % 5 || ans == 0 ? -1 : sum / 5);
17     }
18     return 0;
19 }
原文地址:https://www.cnblogs.com/windysai/p/4032314.html