题目链接: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 }