题目描述

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

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

输入多行,每行一组数据,包含两个正整数n和b,分别代表数值范围和小B所需的数字,其中 1 <= b <= n <= 10^9.
每组输入,单独的行中输出一个数,为小A所选的数字,使得小A获胜的概率最大,若存在多个这样的数,输出最小的那个。

直接上js代码,可以直接复制到控制台运行,思路解释都在注释里面了:

/**
* 选数字游戏执行函数
* @param {Number} n 玩游戏的次数
*/
function playGame(n) {
let x = n;
if (typeof n !== 'number' || parseInt(n) !== n) {
console.warn("请输入整数局的对局次数");
return false;
} let aWin = 0;
while (x > 0) {
let winner = aMustWin();
if (winner === 'a') {
aWin++
}
x--
} console.log(`
共进行游戏${n}场
小A获胜${aWin}场
小A的胜率为${aWin / n *100}%
`)
} function aMustWin() {
//生成n
let n = Math.floor(Math.random() * Math.pow(10, 9));
while (n === 0) {
n = Math.floor(Math.random() * Math.pow(10, 9));
} //按规则随机生成c - c不可能为0
let c = Math.floor(Math.random() * n);
while (c === 0) {
c = Math.floor(Math.random() * n);
} //小B的选择 - b不可能等于0
let b = Math.floor(Math.random() * n);
while (b === 0) {
b = Math.floor(Math.random() * n);
} //小A的选择 - 选择靠近小B的选择,并在靠近中值的一侧
let a = 0,
mid = parseInt((n + 1) / 2);
if (mid > b) {
a = b + 1
} else {
a = b - 1
} //比较谁离C近
if (Math.abs(c - b) <= Math.abs(c - a)) {
console.log(`
数值范围为1 - ${n}
随机值c为 - ${c}
小A的选择为 - ${a}
小B的选择为 - ${b}
小B获胜
`)
return 'b'
} else {
console.log(`
数值范围为1 - ${n}
随机值c为 - ${c}
小A的选择为 - ${a}
小B的选择为 - ${b}
小A获胜
`)
return 'a'
}
}
playGame(1000) //玩一千把

360技术笔试编程题 - 无意间看到这么个东西,闲来无事用JS写了一下的更多相关文章

  1. 2017 CVTE春招内推专场 C/C++软件开发岗笔试编程题

    先来一波吐槽:选择题全是不定项选择,考的内容在我看来,"反正我接受唔到咯". 比如: 1.Windows操作系统某个通信机制(具体题目忘了,反正答案我选了个熟悉的名词"消 ...

  2. CVTE前端笔试编程题

    这些题目是做完笔试之后,在别的地方找到的,现在附上. 1.(1)这题考察的怎么把参数转换为数组,然后再截取你想要的位数. function C(){ var a_args=Array.prototyp ...

  3. 一道生成不重复随机数字的C#笔试编程题

    当时写在纸上的程序没有验证输入,出面试公司没多久就突然想起来这点了,囧啊! 不过当时笔试的时候想到写异常处理了. 回来上机整理了一下程序,才发现原来还会用到递归的. 当时面试官边说边出的题,问他数字是 ...

  4. 网易2019校招C++研发工程师笔试编程题

    丰收? (忘了题目了QAQ) 题目描述: 又到了丰收的季节,恰逢小易去牛牛的果园里游玩. 牛午常说他对整个果园的每个地方都了如指掌,小易不太相信, 所以他想考考牛牛. 在果园里有N堆苹果,每堆苹果的数 ...

  5. 腾讯笔试编程题,贪吃的小Q(二分查找)

    问题描述 小Q的父母要出差N天,走之前给小Q留下了M块巧克力.小Q决定每天吃的巧克力数量不少于前一天吃的一半,但是他又不想在父母回来之前的某一天没有巧克力吃,请问他第一天最多能吃多少块巧克力. 输入描 ...

  6. HW2017笔试编程题

    一.写一个转换字符串的函数 1.题目描述 将输入字符串中下标为偶数的字符连成一个新的字符串输出,需要注意两点: (1)如果输入字符串的长度超过20,则转换失败,返回“ERROR!”字符串: (2)输入 ...

  7. HW2018校招研发笔试编程题

    1. 数字处理 题目描述:给出一个不多于5位的整数,进行反序处理,要求 (1)求出它是几位数 (2)分别输出每一个数字(空格隔开) (3)按逆序输出各位数字(仅数字间以空格间隔,负号与数字之间不需要间 ...

  8. 今日头条 2018 AI Camp 5 月 26 日在线笔试编程题第一道——最佳路径

    题目 给定一个 n*m 的矩阵 A ,矩阵中每一个元素为一个十六进制数.寻找一条从左上角都右下角的路径,每次只能向右或者向下移动, 使得路径上所有数字之积在 16 进制下的后缀 0 最少. 输入描述: ...

  9. 今日头条 2018 AI Camp 6 月 2 日在线笔试编程题第一道——最大连续区间和扩展

    题目 给出一个长度为 n 的数组a1.a2.....ana1.a2.....an,请找出在所有连续区间 中,区间和最大同时这个区间 0 的个数小于等于 3 个,输出这个区间和. 输入描述: 第一行一个 ...

随机推荐

  1. Python turtle学习笔记

    1介绍 Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而 ...

  2. Android CmakeList

    https://www.cnblogs.com/chenxibobo/p/7678389.html

  3. UnicodeEncodeError: 'gbk' codec can't encode character '\xee'

    在将爬取到的内容写入文件时候报了这个错误,解决方案是在open()的时候给encoding参数传'utf-8'就好了,因为网页的编码就是utf-8. with open('douban.html',' ...

  4. go生成不重复的纯数字6位的随机数

    最近在学go, 按照入门指南学完go的基础语法, 开始学习go的标准库;  借用生成这个小任务复习一下go的基础语法. 推荐go编辑, jb公司的goland, 超级好用. 推荐go入门指南, htt ...

  5. 回文的范围——算法面试刷题2(for google),考察前缀和

    如果一个正整数的十进制表示(没有前导零)是一个回文字符串(一个前后读取相同的字符串),那么它就是回文.例如,数字5, 77, 363, 4884, 11111, 12121和349943都是回文. 如 ...

  6. js的closures(闭包)

    JS中的闭包(closure) 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.下面就是我的学习笔记,对于Javascript初学者应该是很有用 ...

  7. centos更换网易的源

    刚安装的centos系统下载软件可能很慢,就可以试一下更换为国内比较知名的源试试.现在知道的网易和中科大源很不错.那么怎么更换呢 1. cd /etc/yum.repos.d/           c ...

  8. vue组件的通信

    组件的引入两种方式 动态组件  <p is="com-a"></p> 直接引入 <com-a></com-a> 插槽功能 父组件引入 ...

  9. Django框架教程之正则表达式URL误区详解

    问题:我学习的视频大概是2015年录的,里面用的Django版本比较老关于正则表达式URL这一块都是用的url(“url(r'^admin/', admin.site.urls),”)方法.而我自己练 ...

  10. java入门day04-方法简述

    方法: 是完成特定功能(一个)的代码集合,这些特定功能的代码可以被重复使用. 修饰符  方法返回值类型  方法名(形参列表){  方法体  }return 返回值: 形如: public static ...