字节青训营 2024 入营考核

时间:2024-10-17 07:44:51

简单题

兔生兔

题目描述

# 问题描述
- 如果一对兔子每月生一对兔子;一对新生兔,从第二个月起就开始生兔子;假定每对兔子都是一雌一雄,试问一对兔子,第 `n` 个月能繁殖成多少对兔子?(举例,第1个月是1对兔子,第2个月是2对兔子)

## 输入格式
- 数字

## 输出格式
- 数字

## 输入样例
- 5

## 输出样例
- 8

## 数据范围
- `[1, 75]`

## 测试数据集
  - 样例1
    - 输入:`5`
    - 输出:`8`
  - 样例2
    - 输入:`1`
    - 输出:`1`
  - 样例3
    - 输入:`15`
    - 输出:`987`
  - 样例4
    - 输入:`50`
    - 输出:`20365011074`

方法 

斐波拉切数列 用递归的话记得写记忆化搜索保证时间复杂度

vis = [False for _ in range(76)]
F = [0 for _ in range(76)]
def calc_fbi(x):
    if vis[x] == True:
        return F[x]
    if x==1 or x==0 :
        return 1
    vis[x] = True
    F[x] = calc_fbi(x-1) + calc_fbi(x-2)
    return F[x]
def solution(A):
    # Edit your code here
    return calc_fbi(A)


if __name__ == "__main__":
    # Add your test cases here
    print(solution(5) == 8)
    print(solution(1) == 1)
    print(solution(15) == 987)
    print(solution(50) == 20365011074)

找单独的数       

题目描述

# 问题描述
有一堆数字,除了一个数字,其它的数字都是成对出现。班上的每个同学拿一个数字,正好将这些数字全部拿完,问如何快速找到拿了单独数字的同学?

## 输入格式
- 空格分隔输入所有的数字

## 输出格式
- 单独的那个数字

## 输入样例(1)
```
1 1 2 2 3 3 4 5 5
```
## 输出样例(1)
4

## 输入样例(2)
```
0 1 0 1 2
```
## 输出样例(2)
2

方法

经典的异或

def solution(inp):
    # Edit your code here
    res = 0
    for x in inp:
        res = res ^ x
    return res


if __name__ == "__main__":
    # Add your test cases here

    print(solution([1, 1, 2, 2, 3, 3, 4, 5, 5]) == 4)
    print(solution([0, 1, 0, 1, 2]) == 2)

和的逆运算

问题描述

# 问题描述

n 个整数两两相加可以得到 `n(n - 1) / 2` 个和。我们的目标是:根据这些和找出原来的 n 个整数。

## 输入格式

输入每行一个整数 `n`(`2 < n < 10`)开头,接下来是 `n(n - 1) / 2` 个整数,代表两两相加的和,相邻整数以空格隔开。

## 输出格式

对于输入的每一行,输出一行,包含 n 个整数,按非降序排序,如果有多组解,任意输出一组即可。如果无解,输出 "Impossible"。

**输入样例**:
- 3 1269 1160 1663
- 3 1 1 1
- 5 226 223 225 224 227 229 228 226 225 227
- 5 -1 0 -1 -2 1 0 -1 1 0 -1
- 5 79950 79936 79942 79962 79954 79972 79960 79968 79924 79932

**输出样例**:
- 383 777 886
- Impossible
- 111 112 113 114 115
- -1 -1 0 0 1
- 39953 39971 39979 39983 39989

方法

x1 + x2                                        + 0 * xn = a1

x1 + x3 = a2

共 n * (n-1) / 2 个方程 n个未知数