迟来的省赛题目(4月23日)答案!
准备好了吗?迎接怪盗基德的到来吧
怪盗キッドを迎えよう(完了,中二病犯了!)
注:没看过题目的往这里走哦!(有兴趣的可以去康康呀)
省赛题目(4月23日)_怪盗基德的头号女粉的博客-CSDN博客https://blog.csdn.net/A996B/article/details/124364712?spm=1001.2014.3001.5501
题目一:
好,我们话不少多说,上第一道题思路及解法。
思路:
代码:
S1 = input()
S2 = input()
print(S1 + S2)
题目二:
思路:
举个例子:
str = "this is really a string example....wow!!!"
print("Max character: " + max(str))
#输出结果:
'''
Max character: y
'''
str = "this is a string example....wow!!!"
print("Max character: " + max(str))
#输出结果:
'''
Max character: x
'''
代码:
N = list(input())
print(max(N))
题目三:
思路:
代码:
N = int(input())
a = list(map(int,input().split(",")))
b = 0
for i in a:
if i <= N:
b += 1
elif i <= int(N + 80):
b += 1
else:
continue
print(b)
题目四:
思路:
代码:
n = int(input())
a = 1
b = 2
c = 4
for i in range(1,n-3,1):
c, b, a = a+b+c, c, b
print(c)
题目五:
思路:
# 说明:
# 所有测试数据正确率为 66%!
# 可以尝试再次完善代码,并调试,争取全部AC通过
代码:
n=input() # 输入行和列
N=int(n[0]) # 行就是第一个
M=int(n[2]) # 去掉空格来算,列是第三个
s=[] # 创建一个列表,里面要装所有的格子
d=0 # 输出结果(最长奖品对角线)
for i in range(N): # 搞N行的输入框
c=input()[::2] # 去掉空格
c=[int(i) for i in c] # 转成数字
s.append(c) # 装进大列表里
def find_left(i,j,s): # 进行左对角线寻找 i是行数索引号,j是列数索引号
global N # 把N搞成全局变量,要用一下它
h=1 # 对角线奖品数
if s[i][j] == 1: # 看看第一个是不是有礼物
while j > 0 and i<N-1: # 循环,达到对角线遍历的效果。j要注意不要等于零(后面j-1时会超出遍历范围)。i同理
# N要变成索引号得-1
i+=1 # 往下一列
j-=1 # 往左一格
if s[i][j] == 1: # 如果有礼物
h+=1 # 对角线奖品数+1
return h # 最终返回对角线奖品数量
else: # 如果第一个就没有奖品 就没有遍历的价值了
return 0; # 直接返回0
def find_right(i,j,s): # 进行右对角线寻找 和左对角线寻找方法一模一样
global N,M # 这回M也要用用
h=1
if s[i][j] == 1:
while j < M-1 and i<N-1: # M-1的道理和N-1的一样
i+=1
j+=1 # 往右一格
if s[i][j] == 1:
h+=1
return h
else:
return 0;
for i in range(N): # i是行索引号
for j in range(M): # j是列索引号
e=find_left(i,j,s) # 左边找找
f=find_right(i,j,s) # 右边也找找
d=e if e>d else f if f>d else d # 这里运用了一个三目运算符
# 返回e 得满足e>d。要不就是f 得满足f>d。都不是返回d
print(d)
#第二种方法
q=input() # 输入两个数 空格隔开
n=q[0] # 行数
N=int(n) # 转成整数
m=q[2] # 列数
M=int(m)
l1=[] # 保存二维列表 就是题中N*M格子
l=[] # 保存每次查找到的对角线上的奖品的个数
for i in range(N): # 遍历行
a = list(map(int, input().split(" "))) # 输入每行的奖品(1有奖 0无奖)
l1.append(a) # 整行保存到列表中
def find_l(l,x,y): # 从左到右查找奖品
global s
if l[x][y] == 1: # 判断是否有奖
s += 1 # 有奖就记上
x += 1
y += 1 # x,y 理解成坐标 方便下面的移动位置
if x <= 4 and y <= 5: # 判断是否在列表范围内
find_l(l,x,y) # 是! 就继续找
else:
return s # 递归的终止条件 返回找到的奖品本次数量
def find_r(l,x,y): # 从右侧往左侧找
global s1
if l[x][y] == 1:
s1 += 1
x += 1
y -= 1
if x <= 4 and 1 < y <= 5:
find_l(l,x,y)
else:
return s1
for i in range(N):
for j in range(M): # 整个矩形格子里的每一个小格子 预备好被查找
s = 0
s1=0
find_l(l1,i,j) # 从左到右找
l.append(s) # 找到的数量 保存到列表里
find_r(l1, i, j) # 从右到左找
l.append(s1) # 找到的数量 保存到列表里
print(max(l)) # 打印出找到最长那条线上的奖品数
题目六:
思路:
代码
#等找到大佬的题解再更新···,不会呀
结束语:
中文:
好的,那么这篇文章到这里就结束了,那我们下期再见吧!
日语:
はい、では、この文章はここで終わります。じゃ、次の号でまた会いましょう。
目录