【求职】腾讯 2018 春招技术类编程题汇总
一、编程题
1.翻转数列
小 Q 定义了一种数列称为翻转数列: 给定整数 n 和m, 满足 n 能被 2m 整除。对于一串连续递增整数数列 1, 2, 3, 4…, 每 隔 m 个符号翻转一次, 最初符号为’-’;。 例如n = 8, m = 2, 数列就是: -1, -2, +3, +4, -5, -6, +7, +8. 而n = 4, m = 1, 数列
就是: -1, +2, -3, + 4. 小Q 现在希望你能帮他算算前n 项和为多少。
输入描述:
输入包括两个整数n 和m(2 <= n <= 109, 1 <= m), 并且满足n 能被2m 整除。
输出描述:
输出一个整数, 表示前n 项和。
输入例子1:
8 2
输出例子1:
8
2.纸牌游戏
牛牛和羊羊正在玩一个纸牌游戏。这个游戏一共有 n 张纸牌, 第i 张纸牌上写着数字ai。 牛牛和羊羊轮流抽牌, 牛牛先
抽, 每次抽牌他们可以从纸牌堆中任意选择一张抽出, 直到纸牌被抽完。 他们的得分等于他们抽到的纸牌数字总
和。 现在假设牛牛和羊羊都采用最优策略, 请你计算出游戏结束后牛牛得分减去羊羊得分等于多少。
输入描述:
输入包括两行。
第一行包括一个正整数n(1 <= n <= 105),表示纸牌的数量。
第二行包括n 个正整数ai(1 <= ai <= 109),表示每张纸牌上的数字。
输出描述:
输出一个整数, 表示游戏结束后牛牛得分减去羊羊得分等于多少。
输入例子1:
32 7 4
输出例子1:
5
3.贪吃的小 Q 小 Q 的父母要出差 N 天,走之前给小 Q 留下了M 块巧克力。小 Q 决定每天吃的巧克力数量不少于前一天吃的一半,但
是他又不想在父母回来之前的某一天没有巧克力吃,请问他第一天最多能吃多少块巧克力
输入描述:
每个输入包含一个测试用例。
每个测试用例的第一行包含两个正整数,表示父母出差的天数N(N<=50000)和巧克力的数量 M(N<=M<=100000)。
输出描述:
输出一个数表示小Q 第一天最多能吃多少块巧克力。
输入例子1:
3 7
输出例子1:
4
4.小 Q 的歌单
小 Q 有X 首长度为 A 的不同的歌和 Y 首长度为 B 的不同的歌,现在小 Q 想用这些歌组成一个总长度正好为 K 的歌单,每
首歌最多只能在歌单中出现一次,在不考虑歌单内歌曲的先后顺序的情况下,请问有多少种组成歌单的方法。
输入描述:
每个输入包含一个测试用例。
每个测试用例的第一行包含一个整数,表示歌单的总长度K(1<=K<=1000)。
接下来的一行包含四个正整数,分别表示歌的第一种长度A(A<=10)和数量 X(X<=100)以及歌的第二种长度 B(B<=10)和数
量Y(Y<=100)。保证A 不等于 B。
输出描述:
输出一个整数,表示组成歌单的方法取模。因为答案可能会很大,输出对1000000007 取模的结果。
输入例子1:
52 3 3 3
输出例子1:
9
5.安排机器
小 Q 的公司最近接到m 个任务, 第 i 个任务需要xi 的时间去完成, 难度等级为yi。 小 Q 拥有n 台机器, 每台机器最长工作时间 zi, 机器等级 wi。
对于一个任务,它只能交由一台机器来完成, 如果安排给它的机器的最长工作时间小于任务需要的时间, 则不能完成,
如果完成这个任务将获得 200 * xi + 3 * yi 收益。
对于一台机器,它一天只能完成一个任务, 如果它的机器等级小于安排给它的任务难度等级, 则不能完成。
小 Q 想在今天尽可能的去完成任务, 即完成的任务数量最大。如果有多种安排方案,小 Q 还想找到收益最大的那个方
案。小 Q 需要你来帮助他计算一下。
输入描述:
输入包括N + M + 1 行,
输入的第一行为两个正整数n 和 m(1 <= n, m <= 100000), 表示机器的数量和任务的数量。
接下来n 行,每行两个整数zi 和 wi(0 < zi < 1000, 0 <= wi <= 100), 表示每台机器的最大工作时间和机器等级。
接下来的m 行,每行两个整数xi 和yi(0 < xi < 1000, 0 <= yi<= 100), 表示每个任务需要的完成时间和任务的难度等
级。
输出描述:
输出两个整数, 分别表示最大能完成的任务数量和获取的收益。
输入例子1:
1 2
100 3
100 2
100 1
输出例子1:
1 20006
6.画家小 Q
画家小 Q 又开始他的艺术创作。小 Q 拿出了一块有 NxM 像素格的画板, 画板初始状态是空白的,用’X’表示。
小 Q 有他独特的绘画技巧,每次小 Q 会选择一条斜线, 如果斜线的方向形如’/’,即斜率为 1,小 Q 会选择这条斜线中的一段
格子,都涂画为蓝色,用’B’表示;如果对角线的方向形如’’,即斜率为-1,小 Q 会选择这条斜线中的一段格子,都涂画为黄
色,用’Y’表示。
如果一个格子既被蓝色涂画过又被黄色涂画过,那么这个格子就会变成绿色,用’G’表示。
小 Q 已经有想画出的作品的样子, 请你帮他计算一下他最少需要多少次操作完成这幅画。
输入描述:
每个输入包含一个测试用例。
每个测试用例的第一行包含两个正整数N 和M(1 <= N, M <= 50), 表示画板的长宽。
接下来的N 行包含N 个长度为 M 的字符串, 其中包含字符’B’,‘Y’,‘G’,‘X’,分别表示蓝色,黄色,绿色,空白。整个表示小 Q
要完成的作品。
输出描述:
输出一个正整数, 表示小Q 最少需要多少次操作完成绘画。
输入例子1:
4 4
YXXB
XYGX
XBYY
BXXY
输出例子1:
3
例子说明1:
XXXX
XXXX
XXXX
XXXX
->
YXXX
XYXX
XXYX
XXXY
->
YXXB
XYBX
XBYX
BXXY
->
YXXB
XYGX
XBYY
BXXY
求职必备刷题官网:https://github.com/bennyrhys/interview
【更多互联网公司笔试面试真题请关注“让我遇见相似的灵魂”公众号】