列表

详情


NC13559. 数值游戏

描述

为考验各自的数学能力,小B和小A经常在一起玩各种数值游戏,这一次他们又有了一种新玩法。每人从指定的数值范围中各自选择一个整数,记小A选择的数值为a,小B选择的数值为b。他们用一个均匀分布的随机数发生器在该数值范围中随机生成一个整数c,定义制胜的游戏规则为谁选的数离c近则谁取得胜利。由于小B是女生,特别定义当两人的数与c之间的差值相等时,小B获胜。

由于先前的游戏中,小A为表现绅士风度总是输多赢少,因此他特别渴望这次能够给小B比较深刻的映像,所以向你求助。你事先已经知道了小B所选的数值和指定的数值范围,小A希望你帮他选择一个数值使得他获胜的概率最大。

输入描述

输入有若干行,每行为一组数据,包含两个正整数a和b,分别表示数值范围和小B所需的数,其中1<=b<=n<=10^9。

输出描述

对每组输入,在单独的行中输出一个数,为小A所选的数,使得小A获胜的概率最大。若存在多个这样的数,则输出最小的那个。

示例1

输入:

3 1
4 3

输出:

2
2

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 4ms, 内存消耗: 520K, 提交时间: 2021-04-15 20:57:00

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,b;
    while(cin>>n>>b){
         if(n==1) cout<<"1"<<endl;
         else if(b<=n/2) cout<<b+1<<endl;
         else cout<<b-1<<endl;
    }
}

Python3 解法, 执行用时: 42ms, 内存消耗: 4568K, 提交时间: 2022-02-06 15:25:29

try:
    while True:
        m,n=map(int,input().split())
        if(m==1):
            print(1)
        elif(m//2>=n):
            print(n+1)
        else:
            print(n-1)
except:
    pass

C 解法, 执行用时: 1ms, 内存消耗: 336K, 提交时间: 2023-04-27 22:15:44

#include <stdio.h>
int main(){
  int a,b;
  while(~scanf("%d %d",&a,&b)){
  if(a==1) a=1;
  else{
    if(a/2>=b) a=b+1;
    else a=b-1;}
    printf("%d\n",a);
    }
  return 0;
}

上一题