Python算法學習: 競碼編程-藍橋杯校內選拔賽(初賽)重現賽

oj網站地址:競碼編程-藍橋杯校內選拔賽(初賽)重現賽

試題A:第N個素數

def isPrime(n):
    if n == 2:
        return True
    for i in range(2, n):
        if n % i == 0:
            return False
    return True


count = 0
for i in range(2, 10000):
    if isPrime(i):
        count += 1
    if count == 300:
        print(i)
        print(count)
        break

試題B:coffee的簽到題

如果n是偶數,則無法全部進行染色,如果是奇數,則可以全部進行染色

n = int(input())

if n % 2 == 0:
	print("no")
else:
    print("yes")

試題C:不一樣的日期

YY,MM,DD,dd = map(int,input().split())
if dd > 0:
    for i in range(1,dd+1):
        DD += 1
        if DD > 13:
            MM += 1
            DD = 1
        if MM > 23:
            YY += 1
            MM = 1
else:
    for i in range(1,abs(dd)+1):
        DD -= 1
        if DD <= 0:
            MM -= 1
            DD = 13
        if MM <= 0:
            YY -= 1
            MM = 23
print(YY,MM,DD)

試題D:三位分節法

str = input()
str = str[::-1] # 字符串翻轉
ans = ""
cnt = 0
for i in range(len(str)):
    if cnt == 3:
        ans = ans + ","
        cnt = 0
    cnt += 1
    ans = ans + str[i]
ans = ans[::-1]
print(ans)

試題E:水坑題

a,b = map(int, input().split())
ans = (a*b) % (pow(10,9)+7)
print(ans)

試題F:站隊

Python部分數據超時

n = int(input())
data = []
for i in range(1, n+1):
    tmp = list(map(int, input().split()))
    tmp.append(i)
    data.append(tmp)

data = sorted(data,key=lambda x:x[1])
data = sorted(data,key=lambda x:x[0])

for i in range(n-1):
    print(data[i][2], end=" ")
print(data[n-1][2])

試題G:冷門進制

試題H:拯救阿拉德大陸

n = int(input())
nums = list(map(int, input().split()))
ans = 0

for i in range(1,n+1):
    for num in nums:
        if i % num == 0:
            ans += 1
            break
        else:
            continue
print(ans)

試題J:饞嘴羊

import sys
sys.setrecursionlimit(1000000) # 限制遞歸深度爲

def dfs(x, y):
    if x < 0 or y < 0 or x > n - 1 or y > m - 1 or vis[x][y] == 1 or arr[x][y] == '0':
        return
    vis[x][y] = 1
    global ans
    ans += 1
    dfs(x - 1, y)
    dfs(x + 1, y)
    dfs(x, y + 1)
    dfs(x, y - 1)

if __name__ == '__main__':
    n, m ,x, y= map(int, input().split())

    arr = []
    for i in range(n):
        str = input()
        arr.append(list(str))

    vis = [[0 for _ in range(m)] for _ in range(n)] # 判斷是否走過,0爲未走過,1爲走過
    ans = 0

    dfs(x,y)


    print(ans)

連通塊問題

題目地址:http://oj.hzjingma.com/p/29?view=classic

def dfs(grid, i, j):
    if not 0 <= i < len(grid) or not 0 <= j < len(grid[0]) or grid[i][j] == '.': return
    grid[i][j] = '.'
    dfs(grid, i + 1, j)
    dfs(grid, i, j + 1)
    dfs(grid, i - 1, j)
    dfs(grid, i, j - 1)
    dfs(grid, i + 1, j + 1)
    dfs(grid, i - 1, j + 1)
    dfs(grid, i - 1, j - 1)
    dfs(grid, i + 1, j - 1)

if __name__ == '__main__':
    n, m = map(int, input().split())

    arr = []
    for i in range(n):
        str = input()
        arr.append(list(str))

    ans = 0
    for i in range(n):
        for j in range(m):
            if arr[i][j] == 'W':
                dfs(arr,i, j)
                ans += 1
    print(ans)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章