URAL1961:Cantonese Dialect

Open Ural FU Personal Contest 2013


After some thought on where to spend a holiday Vova decided to travel around South China and visit Guangzhou, Shenzhen, Macau and Hong Kong.
Vova heard that South China speaks the Cantonese dialect of the Chinese language. So before setting off he learned several simple phrases in Cantonese. During his first walk around the Guangzhou center Vova said hello to  n passers-by and  m of them responded. Vova concluded that the other ( n −  m) passers-by, obviously, spoke the Mandarin dialect of the Chinese language.
After Vova finished his walk, he decided to evaluate  M, the number of Guangzhou citizens who speak Cantonese. Wikipedia states that the city's population is  N people. Help Vova to find such  M, which maximizes the probability that exactly  m out of  n random passers-by speak Cantonese.

Input

The single input line contains integers  nm and  N (1 ≤  n ≤  N ≤ 10 8; 0 ≤  m ≤  n). Each of the  n passers-by was a Guangzhou citizen and met Vova exactly once during the walk.

Output

Print the required  M. If there are multiple values of  M maximizing the probability, print the largest of them.

Sample Input

input output
10 1 200
20


题意:随机选n个人,有m个说土话,问总共N个人,有几个讲土话
思路:概率问题,要考虑小数取舍

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
#define ls 2*i
#define rs 2*i+1
#define up(i,x,y) for(i=x;i<=y;i++)
#define down(i,x,y) for(i=x;i>=y;i--)
#define mem(a,x) memset(a,x,sizeof(a))
#define w(a) while(a)
#define LL long long
const double pi = acos(-1.0);
#define Len 200005
#define mod 19999997
const int INF = 0x3f3f3f3f;

LL n,m,N,M;

int main()
{
    w(~scanf("%I64d%I64d%I64d",&n,&m,&N))
    {
        M = (N+1)*m/n;
        if(M>N)
            M = N;
        printf("%I64d\n",M);
    }

    return 0;
}


你可能感兴趣的:(ural)