UVa 10812 - Beat the Spread!
2014-06-20 00:45
555 查看
Superbowl Sunday is nearly here. In order to pass the time waiting for the half-time commercials and wardrobe malfunctions, the local hackers have organized a betting pool on the game. Members place
their bets on the sum of the two final scores, or on the absolute difference between the two scores.
Given the winning numbers for each type of bet, can you deduce the final scores?
The first line of input contains n, the number of test cases. n lines follow, each representing a test case. Each test case gives s and d, non-negative integers representing
the sum and (absolute) difference between the two final scores. For each test case, output a line giving the two final scores, largest first. If there are no such scores, output a line containing "impossible". Recall that football scores are always non-negative
integers.
is possible. Since a can be calculated by [(a+b)+(a-b)]/2, (a+b)+(a-b) must be divisible by 2(to give an integer a). Since a and b are non-negative, the sum must be greater than their absolute difference.
their bets on the sum of the two final scores, or on the absolute difference between the two scores.
Given the winning numbers for each type of bet, can you deduce the final scores?
The first line of input contains n, the number of test cases. n lines follow, each representing a test case. Each test case gives s and d, non-negative integers representing
the sum and (absolute) difference between the two final scores. For each test case, output a line giving the two final scores, largest first. If there are no such scores, output a line containing "impossible". Recall that football scores are always non-negative
integers.
Sample Input
2 40 20 20 40
Output for Sample Input
30 10 impossible
Analysis
This problem is about getting a and b with (a+b) and (a-b). It looks simple but there are tricky parts: Given that a and b are non-negative integers, it is necessary to check whether the given inputis possible. Since a can be calculated by [(a+b)+(a-b)]/2, (a+b)+(a-b) must be divisible by 2(to give an integer a). Since a and b are non-negative, the sum must be greater than their absolute difference.
#include <iostream> using namespace std; int main() { int n; // number of test cases int s, d; // sum and difference int a, b; cin >> n; for( int i=0; i<n; i++ ) { cin >> s >> d; if( (s+d)%2 == 0 && s>=d ) // trap: check condition! cout << (s+d)/2 << ' ' << (s-d)/2 << endl; else cout << "impossible" << endl; } return 0; }
相关文章推荐
- UVa 10812 Beat the Spread! (陷阱)
- HDU1194 POJ2301 UVA10812 ZOJ2388 Beat the Spread!【数学】
- UVa 10812 - Beat the Spread!
- UVa 10812 Beat the Spread!
- UVa 10812 - Beat the Spread!
- 10812 - Beat the Spread!
- [结题报告]10812 - Beat the Spread! Time limit: 3.000 seconds
- 10812 - Beat the Spread!
- Beat the Spread! (P2301)
- hdu1194-Beat the Spread!
- 杭电1194-Beat the Spread
- fjnu 1250 Beat the Spread!
- POJ 2301 Beat the Spread!(我的水题之路——两数之和、两数之差)
- poj 2301 Beat the Spread!
- HDOJ1194 Beat the Spread!
- HDOJ 1194 Beat the Spread!
- HDOJ 1194 Beat the Spread!(简单题)
- HDU1194_Beat the Spread!
- 杭电 OJ 1194 Beat the Spread!
- hdu-oj 1194 Beat the Spread!