Skip to content
On this page

荣耀笔试

2023.5.4

1.输入一个正整数a(1<a<10000),请输出a的所有不同约数的平均值,结果四舍五入后取整。
输入描述:
一个整数,表示a的值。
输出描述:
一个整数,表示输出的不同约数的平均值。
示例输入:
2
示例输出:
2

python
import math
a = int(input())
divisors = set()
for i in range(1, int(math.sqrt(a))+1):
    if a % i == 0:
        divisors.add(i)
        divisors.add(a // i)
avg = sum(divisors) / len(divisors)
print(round(avg))

2.通过输入构造迷宫,并输出由起点到终点需要行走的最小步数。迷官由横向X列和纵向Y列的点阵组成,每个点能够移动的方向为上下左右(即针对点(xi,yi),一次移动仅能有一个坐标进行+1/-1的变化)。由于地形影响,从某一点离开需要行走的步数si各不一样(步数为0...100中的整数),但对于同一点从上下左右方向离开所需要的步数相同。
输出由点(0,0)到达(X-1,Y-1)的最小步数,(0,0)和(X-1,Y-1)固定可通行,且输入未指定的情况下(0,0)的离开步数固定为1;若输入指定了(0,0)的离开步数,则以输入为准。
输入描述:
第一行输入迷官横纵列数目,并给出后续指定可通行的点步数的总行数。
X Y N
后续依次输入每个可以通行的点的横纵坐标和离开需要的距离。
x0 y0 s0
...
xn-1 yn-1 sn-1
所有参数范围为0...100以内的整数。
输出描述:
输出由点(0,0)到达(X-1,Y-1)的最短距离S;若无法到达(X-1,Y-1),则输出-1。
示例输入:
3 3 7 0 1 2 0 2 0 1 0 1 1 2 5 2 0 0 2 1 3 2 2 1
示例输出:
5

3.dota游戏里面,召唤师可以控制冰雷火三种元素,并通过元素组合产生新的技能。现在我们修改了一张新的地图,地图中他能够控制n种元素,并且将m个元素围成一个圈组成一个新技能(这m个元素通过旋转或反转,算作重复,如123、231、312、321、213、132都算重复),那么召唤师能组合多少技能(20000>=n>=1,1<=m<=10000),由于结果可能很大,请将结果对1000000007取余。
输入描述:
n和m
输出描述:
组合的技能数
示例输入:
3 3
示例输出:
10

python
MOD = 1000000007

def pow_mod(a, b, mod):
    res = 1
    while b > 0:
        if b & 1:
            res = res * a % mod
        a = a * a % mod
        b >>= 1
    return res

def combination_mod(n, m, mod):
    if m > n:
        return 0
    if m > n // 2:
        m = n - m
    ans = 1
    for i in range(1, m+1):
        ans = ans * (n - i + 1) % mod
        ans = ans * pow_mod(i, mod-2, mod) % mod
    return ans

n, m = map(int, input().split())
ans = combination_mod(n+m-1, m, MOD)
print(ans)