hdu 5066 Harry And Physical Teacher(Bestcoder Round #14)

Harry And Physical Teacher

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 91    Accepted Submission(s): 68


Problem Description
As we all know, Harry Porter learns magic at Hogwarts School. However, learning magical knowledge alone is insufficient to become a great magician. Sometimes, Harry also has to gain knowledge from other certain subjects, such as language, mathematics, English, and even algorithm. 
Today, Harry's physical teacher set him a difficult problem: if a small ball moving with a speed V0 made a completely elastic collision with a car moving towards the same direction with a speed V(V<V0), and the car far outweighs the ball, what was the speed of the small ball after the collision?
This problem was so difficult that Harry hasn't figure out how to solve it. Therefore, he asks you for help. Could you do him this favor?
 

Input
They are several test cases, you should process to the end of file.
There are two integers V and V0 for each test case. All the integers are 32-bit signed non-negative integers.
 

Output
For each test case, just output one line that contains an integer indicate the speed of the small ball after the collision.
 

Sample Input
0 10
 

Sample Output
-10
 

Source
 


   官方题解

这是去年一个学妹问我的物理题。我是这样考虑的:题目告诉我们。小球和车发生的是全然弹性碰撞。那么动能是守恒的。而碰撞过程中。动量也守恒。联立动能守恒。动量守恒方程。

然后另一个非常特殊的条件,车的质量远大于小球,那么结合下实际情况,一个质量非常小的物体撞质量非常大的物体,大的物体的速度是不会发生变化的。有了这个条件。就能够求解了。推导步骤例如以下: 用V表示碰撞前车的速度,V表示碰撞后车的速度;用V0表示碰撞前球的速度,用V0表示碰撞后球的速度;用M表示车的质量。用m表示球的质量。(M>>m) {12MV2+12mV20=12MV2+12mV20MV+mV0=MV+mV0  {12M(V+V)(VV)=12m(V0+V0(V0V0))M(VV)=m(V0V0)可将约成V+V=V0+V0 然后将V视作V,可得V0=2VV0


代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

int main()
{
    long long a,b;
    while(~scanf("%I64d%I64d",&a,&b))
    {
        printf("%I64d
",2*a-b);
    }
    return 0;
}


版权声明:本文博主原创文章。博客,未经同意不得转载。

原文地址:https://www.cnblogs.com/bhlsheji/p/4777602.html