您的位置:首页 > 其它

URAL1961:Cantonese Dialect

2015-04-19 21:59 281 查看


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 n, m and N (1
≤ n ≤ N ≤ 108; 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

inputoutput
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: