招商银行信用卡中心2019秋招IT笔试(AI、开发、测试开发方向)第二批

X游戏

题目

我们称一个数 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 不同的数。要求每位数字都要被旋转。

如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。, , 和 被旋转后仍然是它们自己; 和 可以互相旋转成对方; 和 同理,除了这些以外其他的数字旋转以后都不再是有效的数字。

现在我们有一个正整数 , 计算从 1 到 中有多少个数 是好数/p>

输入描述:

输入正整数

输出描述:

输出1到中好数个数

样例:

解析

数据不大的时候模拟就行了;

数据很大的时候就要数位DP了,这里就不细说了。

跳格子游戏

题目

假设你正在玩跳格子(所有格子排成一个纵列)游戏。需要 跳完 个格子你才能抵达终点。
每次你可以跳 或 个格子。你有多少种不同的方法可以到达终点呢br> 注意:给定是一个正整数。

输入描述:

格子数

输出描述:

跳完个格子到达终点的方法

样例:

解析

斐波拉契数列;

数据很大的时候要用矩阵快速幂加速,详情见深入浅出矩阵快速幂及其简单应用。

糖果分配

题目

假设你是一位很有爱的幼儿园老师,想要给幼儿园的小朋友们一些小糖果。但是,每个孩子最多只能给一块糖果。对每个孩子,都有一个胃口值 ,这是能让孩子们满足胃口的糖果的最小尺寸;并且每块糖果,都有一个尺寸。如果 ,我们可以将这个糖果分配给孩子,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

注意:

你可以假设胃口值为正。

一个小朋友最多只能拥有一块糖果。

输入描述:

第一行输入每个孩子的胃口值

第二行输入每个糖果的尺寸

孩子数和糖果数不超过

输出描述:

能满足孩子数量的最大值

样例:

解析

贪心,尽量让每个孩子得到刚好合适的糖果。

K点游戏

题目

小招喵某日闲来无事,想验一下自己的人品,于是给自己定了一个游戏规则:

这个游戏有三个因素:

游戏开始的时候小招喵有点,之后如果发现自己手上的点不足点,就随机从到的整数中抽取一个(包含和),抽到哪个数字的概率都是相同的。

重复上述过程,直到小招喵获得了或者大于点,就停止获取新的点,这时候小招喵手上的点小于等于的概率是多少/p>

输入描述:

输入为3个整数,分别对应,中间用空格隔开

其中,

输出描述:

输出为概率值,保留5位小数

样例:

解析

枚举最后一次取之前已经取了多少点,然后看看还要取多少点能满足并且就行了。

最后一次取了点的概率可以用记忆化搜索弄出来。

这题比较坑的地方在于保留5位小数,像代码中特殊处理一下才能过这个题。

#include double dfs(int sum, int w, std::vectordouble> & dp){    if ((int)dp[sum] + 1)return dp[sum];    double ret = 0;    for (int i = 1; i  w && i  sum; ++i) {double s = dfs(sum - i, w, dp) / w;ret += s;    }    return dp[sum] = ret;}int main(){    for (int n, k, w; std::cin >> n >> k >> w; ) {double ans = 0;std::vectordouble> dp(k + 1, -1);dp[0] = 1;for (int pre = 0; pre  k; ++pre) {    if (k - pre > w) 

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年10月17日
下一篇 2018年10月17日

相关推荐