300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 0415字节跳动今日头条笔试题——后台研发方向

0415字节跳动今日头条笔试题——后台研发方向

时间:2023-05-16 09:34:32

相关推荐

0415字节跳动今日头条笔试题——后台研发方向

[编码题|20分] 找周期

时间限制:C/C++ 5秒,其他语言 10秒

空间限制:C/C++ 65536K,其他语言 131072K

.

题目描述

.

对于严格递增的正整数数列A=a1、a2、……、an,如果一个正整数T满足:

1)对于数列A中的任意元素x,如果x+T不大于an,则x+T也是数列A中的元素

2)对于数列A中的任意元素x,如果x-T不小于a1,则x-T也是数列A中的元素

那么称T为数列A的周期,如果同时满足:

3)所有小于T的正整数,都不是A的周期

则称T为A的最小周期

输入描述:

每组测试样本的输入格式为:

第一行是一个正整数N

从第二行开始,每行有若干个正整数,依次存放n、a1、a2、……、an,一共有N行,也就是N个数列。

输出描述:

输出有N行,每行打印出对应数列的最小周期。

示例1

输入

3

3 1 2 3

3 2 4 6

3 3 4 6

输出

1

2

3

说明

数据范围:

N:0

[编码题|20分] 拼硬币

时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++ 65536K,其他语言 131072K

.

题目描述

.

.

现有n1+n2种面值的硬币,其中前n1种为普通币,可以取任意枚,后n2种为纪念币,每种最多只能取一枚,每种硬币有一个面值,问能用多少种方法拼出m的面值?

8 输入描述:

第一行三个整数n1, n2, m,分别表示普通币种类数,纪念币种类数和目标面值

第二行n1个整数,第i种普通币的面值a[i]。保证a[i]为严格升序。

第三行n2个整数,第i种纪念币的面值b[i]。保证b[i]为严格升序。

对于30%的测试,保证1<=n1+n2<=10,1<=m<=100,1<=a[i]<=100 1<=b[i]<=100

对于100%的测试,保证1<=n1+n2<=100, 1<=m<=100000, 1<=a[i]<=100000 1<=b[i]<=100000

输出描述:

输出一行,包含一个数字x,表示方法总数对1000000007(1e9+7)取模的结果。

注意:不要忘记取模!

示例1

输入

3 1 5

1 2 3

1

输出

9

说明

(x)代表面值为x的普通币,[x]代表面值为x的纪念币,样例所有方法数如下:

(1)(1)(1)(1)(1)

(1)(1)(1)(2)

(1)(1)(3)

(1)(2)(2)

(2)(3)

(1)(1)(1)(1)[1]

(1)(1)1

(1)1

1(2)

备注:

两个方法,它们任意一种或以上的硬币数量不同,则认为是两种拼法。

[编码题|20分] 矩形游戏

时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++ 65536K,其他语言 131072K

.

题目描述

.

.

小a在玩一个很简单的游戏,游戏的内容是控制一个小人在一块矩形的空地内走,一旦小人走出矩阵范围,游戏就失败。游戏机有上,下,左,右四个按键,每按一下小人就向相应的方向走一步。这个游戏过于简单,小a说:“这种游戏我闭着眼睛玩都输不了”。于是他便闭上眼睛,进行一连串的操作。但若他中途输了的话就会停止。

那么问题来了:给定小a的操作,进行Q次询问,你能算出每次询问小人能走多少步吗?

输入描述:

第一行为长度L的字符串S,每个字符依次代表小a的一次操作。’u’代表向上,’d’代表向下,’l’代表向左,’r’代表向右。字符串S不会包含其他字符。

第二行是整数Q,代表Q次询问

接下来Q行,每行有四个整数,N,M,X,Y,保证1<=X<=N,1<=Y<=M,矩阵大小为N*M,小人初始位置为(X, Y)。

对于30%的测试,0

[编码题|20分] 有理数

时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++ 65536K,其他语言 131072K

.

题目描述

.

.

升序数组中第一个是1, 后续为若干连续的素数,对于数组里面的元素m和n(m < n)都对应了一个有理数m / n, 现在给定这个数组和一个K,要求返回第K小的有理数。

输入描述:

每组测试样本的输入格式为:

第一行是一个正整数N

从第二行开始,每行有若干个正整数,依次存放K、a1、……、an,一共有N行,也就是N组参数。

K是输入参数表示需要寻找的顺序第K小的有理数, a1 - an 是以1开始后续n - 1个素数。

输出描述:

输出有N行,每行两个数字m和n,空格隔开,分别表示第K小有理数的分子和分母。

示例1

输入

1

3 1 2 3 5

输出

2 5

备注:

m、n必须为a1 - an中的满足条件的两个数。

数据范围为:

10 <= N <= 20000

10 <= K <= 20000

1 <= m < n < 20000

[编码题|20分] 电容充电

时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++ 65536K,其他语言 131072K

.

题目描述

.

.

有一台用电容组成的计算器,其中每个电容组件都有一个最大容量值(正整数)。

对于单个电容,有如下操作指令:

指令1:放电操作 - 把该电容当前电量值清零

指令2:充电操作 - 把该电容当前电量补充到其最大容量值

对于两个电容A和B,有如下操作指令:

指令3:转移操作 - 从A中尽可能多的将电量转移到B,转移不会有电量损失,如果能够充满B的最大容量,那剩余的电量仍然会留在A中

现在已知有两个电容,其最大容量分别为a和b,其初始状态都是电量值为0,希望通过一系列的操作可以使其中某个电容(无所谓哪一个)中的电量值等于c(c也是正整数),这一系列操作所用的最少指令条数记为M,如果无论如何操作,都不可能完成,则定义此时M=0。

显然对于每一组确定的a、b、c,一定会有一个M与其对应。

输入描述:

每组测试样本的输入格式为:

第一行是一个正整数N

从第二行开始,每行都是3个正整数依次组成一组a、b、c,一共有N组

输出描述:

输出为N行,每行打印每一组的对应的M

示例1

输入

2

3 4 2

2 3 4

输出

4

0

说明

对于(3,4,2),最少只需要4个指令即可完成:

(设最大容量为3的是A号电容,另一个是B号电容)

充电 A转移 A->B充电 A转移 A->B

此时A中当前电量为2,操作完成,所以输出4。

对于(2,3,4),显然不可能完成,输出0。

备注:

数据范围:

N:0

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。