文章目录
数列求值
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
给定数列 1, 1, 1, 3, 5, 9, 17, \cdots1,1,1,3,5,9,17,⋯,从第 44 项开始,每项都是前 33 项的和。
求第 2019032420190324 项的最后 44 位数字。
运行限制
最大运行时间:1s
最大运行内存: 128M
分析
- 简单的类斐波那契数列,直接使用递推即可,不过最好每一步都取余10000,有利于计算。
尤其c语言这部操作可以防止数据溢出
运行代码
a,b,c = 1,1,1
for i in range(4,20190325):
a,b,c = b%10000,c%10000,(a+b+c)%10000
print(c)
通过截图
灌溉
题目描述
小蓝负责花园的灌溉工作。
花园可以看成一个 n 行 m 列的方格图形。中间有一部分位置上安装有出水管。
小蓝可以控制一个按钮同时打开所有的出水管,打开时,有出水管的位置可以被认为已经灌溉好。
每经过一分钟,水就会向四面扩展一个方格,被扩展到的方格可以被认为已经灌溉好。即如果前一分钟某一个方格被灌溉好,则下一分钟它上下左右的四个方格也被灌溉好。
给定花园水管的位置,请问 k 分钟后,有多少个方格被灌溉好?
输入描述
输入的第一行包含两个整数 n,m。
第二行包含一个整数 t,表示出水管的数量。
接下来 t 行描述出水管的位置,其中第 i 行包含两个数 r,c 表示第 r 行第 c 列有一个排水管。
接下来一行包含一个整数 k。
其中,1≤n,m≤100,1≤t≤10,1≤k≤100。
输出描述
输出一个整数,表示答案。
输入输出样例
示例 1
输入
3 6
2
2 2
3 4
1
输出
9
运行限制
最大运行时间:1s
最大运行内存: 128M
分析
- 注意,这题数据量相对较小,所以可以通过所有测试点。
- 优化的话,需要在扩散后弄个其他的标记,防止重复搜索四个方向。(写法相对简单,这里不多赘述)
运行代码
import os
import sys
def kuo(r,c):
global n
global m
# 搜索四个方向
for i in range(4):
x_new = r+dic[i][0]
y_new = c+dic[i][1]
if (x_new < 0 or x_new >= n or y_new < 0 or y_new >= m or nums[x_new][y_new] == 1):# 越界或浇过
continue
else:
nums[x_new][y_new] = 1
n,m = map(int,input().split())
nums = [[0] * m for _ in range(n)]
dic = [(0,-1),(0,1),(-1,0),(1,0)]
t = int(input())
for i in range(t):
r,c = map(int,input().split())
nums[r-1][c-1] = 1
kuo(r-1,c-1) # 第一分钟扩散
k = int(input())-1
while k:
for i in range(n):
for j in range(m):
if nums[i][j]:
kuo(r,c)
k-=1
res = 0
for i in range(n):
for j in range(m):
if nums[i][j] == 1:
res+=1
print(res)
通过截图
如有错误,敬请指正,欢迎交流,谢谢♪(・ω・)ノ