啦啦啦啦啦 我是傳送門,快點我看題目
I Will WinTime Limit: 2000/1000 MS (java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 398 Accepted Submission(s): 246PRoblem DescriptionDumbear likes to play table tennis with his daughter – Quan. But Dumbear found that Quan played table tennis better and better recently, Dumbear wondered that Quan would defeat him someday. So he wants to know if he will win in the next match.To simplify the problem, you can assume that the probability of Dumbear’s winning in each match is a constant number P (But Dumbear and you don’t know the number exactly). Of course 0 ≤ P ≤ 1. Dumbear had already taken N matches with Quan. And he won for M matches. He wants to know the expected probability of his winning for the next match. But Dumbear is very dumb, so he wants you to help him. InputEach line of the input file contains two numbers N and M (0 ≤ M ≤ N) indicate the number of the matches Dumbear had taken and the number of matches Dumbear had won. The last line of the input file contains two numbers "0 0". OutputFor each line, output two integers A and B indicates the expected probability of Dumbear’s winning for the next match is A / B. Make sure that gcd(A, B) = 1! Sample Input1 12 10 0 Sample Output2 31 2 |
題目大意:有個小孩和爸爸一起打乒乓球,小孩越打越好,爸爸就有點擔心了,想知道自己下一局贏的期望概率*.*,給你他們比賽的局數n,爸爸贏的局數m,要你求P,P的分子為A,分母為B
你們看 公式就是這么簡單,具體推導詳見百度,我們怎么樣求最簡分數呢,當然是用gcd咯,具體代碼如下:
#include <iostream>using namespace std;int gcd(int x,int y){ if (y==0) return x; if(x<y) return gcd(y,x); else return gcd(y,x%y);}int main(){ int n,m,a,b; while(cin>>n>>m) { if(n==0&&m==0) break; a=m+1; b=n+2; int t=gcd(a,b); a=a/t; b=b/t; cout<<a<<" "<<b<<endl; } return 0;}
新聞熱點
疑難解答