且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Codeforces 570 B.Simple Game

更新时间:2022-06-30 23:31:29

click here ~~

                                   ***B. Simple Game***

One day Misha and Andrew were playing a very simple game. First, each player chooses an integer in the range from 1 to n. Let's assume that Misha chose number m, and Andrew chose number a.

Then, by using a random generator they choose a random integer c in the range between 1 and n (any integer from 1 to n is chosen with the same probability), after which the winner is the player, whose number was closer to c. The boys agreed that if m and a are located on the same distance from c, Misha wins.

Andrew wants to win very much, so he asks you to help him. You know the number selected by Misha, and number n. You need to determine which value of a Andrew must choose, so that the probability of his victory is the highest possible.

More formally, you need to find such integer a (1 ≤ a ≤ n), that the probability that  is maximal, where c is the equiprobably chosen integer from 1 to n (inclusive).

Input
The first line contains two integers n and m (1 ≤ m ≤ n ≤ 109) — the range of numbers in the game, and the number selected by Misha respectively.

Output
Print a single number — such value a, that probability that Andrew wins is the highest. If there are multiple such values, print the minimum of them.

Sample test(s)
input
3 1
output
2
input
4 3
output
2

解题思路:就是看m与中间数的关系,具体详见代码:

/*
Date : 2015-8-26 晚上
Author : ITAK

Motto :

今日的我要超越昨日的我,明日的我要胜过今日的我;
以创作出更好的代码为目标,不断地超越自己。
*/
#include <iostream>
using namespace std;

int main()
{
    int n, m;
    while(cin>>n>>m)
    {
        int start = m-1;
        int end = m+1;
        if(m==1 && n==1)
            cout<<1<<endl;
        else
        {
            if(m > n/2)
                cout<<start<<endl;
            else
                cout<<end<<endl;
        }
    }
    return 0;
}