Simple Game

时间: 1ms        内存:128M

描述:

有一天MishaAndrew正在玩一个非常简单的游戏。首先,每个玩家选择1n范围内的整数。让我们假设Misha选择了数字mAndrew选择了数字a

 

然后,让我们通过使用随机生成器以相同的概率1n之间范围内随机生成整数c更接近数字c的玩家是获胜者。如果ma位于与c相同的距离,Misha会赢。

 

Andrew非常想赢,所以他请你帮助他。你知道Misha选择的号码m和号码n。您需要确定Andrew选择哪些值使他的胜利的概率是最高的可能。

输入:

第一行包含两个整数n和m1m≤n≤10^9游戏中数字的范围,Misha选择的数字

输出:

一个数字这样的值aAndrew获胜的概率是最高的。如果有多个这样的值,请打印它们中的最小值。

示例输入:

3 1

示例输出:

2

提示:

参考答案(内存最优[1120]):

#include<stdio.h>
int main()
{
    int i,t;
    long long int m,n;
    scanf("%lld%lld",&n,&m);
    if(n==1)
    	printf("1");
    else if(m<=n/2)
        printf("%lld",m+1);
    else printf("%lld",m-1);
    return 0;
}

参考答案(时间最优[2]):

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn=1e5+7;
const double eps=1e-8;
char s[maxn];
ll n,m;
int main()
{
    scanf("%lld%lld",&n,&m);
    ll ans;
    if(n==1)
        ans=1;
    else if(n==2)
    {
        if(m==1)
            ans=2;
        else
            ans=1;
    }
    else if(m>(n/2))
        ans=m-1;
    else if(m==(n/2))
        ans=m+1;
    else if(m<(n/2))
        ans=m+1;
    printf("%lld\n",ans);
    return 0;
}
//scanf("%lld%lld",&n,&m);
//    ll ans;
//    if(n%2!=0)
//    {
//        ll  c=n/2+1;
//        if(m==c)
//            ans=m;
//        else if(m>c)
//        {
//            ans=n-m+2;
//        }
//        else if(m<c)
//            ans=m+1;
//    }
//    else
//    {
//        ll c1=n/2;
//        ll c2=n/2+1;
//        if(m<c1)
//        {
//            ans=m+1;
//        }
//        else if(m==c1)
//        {
//            ans=m+1;
//        }
//        else if(m==c2)
//        {
//            ans=m-1;
//        }
//        else if(m>c2)
//        {
//            ans=n-m+2;
//        }
//    }
//    printf("%lld\n",ans);

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。