文章目录

  • 前言
  • Python代码
  • 1、题目名称:严查枪火
  • 2、题目名称:鬼画符门
  • 3、题目名称:收件邮箱
  • 4、题目名称:最长递增的区间长度
  • 经验心得


前言

本次比赛比较简单,拼的就是速度了。因为点了开始比赛时,突然感到一阵屎意,导致迟了半个小时才正式开始答题,所以没能取得比较好的名次。题目比较简单,直接用Python一把梭哈。

Python代码

1、题目名称:严查枪火

X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。
小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)

输入描述:
第一行输入整数n.(1<=n<=10000)表示携带违禁物品的人数。
以下n行表示违禁物品的名称。

输出描述:
输出需要按照私藏枪火来关押的人。

输入样例:
3
Dsd
ak
232asd

输出样例:
1

class Solution:
	def __init__(self) -> None:
		pass
		
	def solution(self, n, vector):
		result = None
		
		# TODO: 请在此编写代码
		result = 0
		for i in range(n):
			if vector[i]=="ak" or vector[i]=="m4a1" or vector[i]=="skr":
				result+=1
				
	return result
	
	if __name__ == "__main__":
	
		n = int(input().strip())
		
		vector = []
		for i in range(n):
			vector.append(input().strip())
			
		s = Solution()
		result = s.solution(n, vector)
		
		print(result)

2、题目名称:鬼画符门

Itmc杯python编程挑战赛 python编程大赛_python


鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个程序统计每年消耗数量最多的鬼画符吗?

输入描述:
第一行输入整数n.(1<=n<=1000)
以下n行输入n个字符串。

输出描述:
输出答案字符串。

输入样例:
5
red
red
green
grenn
hen

输出样例:
red

class Solution:
	def __init__(self) -> None:
		pass
		
	def solution(self, n, vector):
		result = None
		
		# TODO: 请在此编写代码
		dict={}
		for i in vector:
			if i not in dict:
				dict[i]=1
			else:
				dict[i]+=1
		t=max(dict.values())
		for k,v in dict.items():
			if v==t:
				result=k
				break
				
		return result
		
if __name__ == "__main__":

	n = int(input().strip())
	
	vector = []
	for i in range(n):
		vector.append(input().strip())
		
	s = Solution()
	result = s.solution(n, vector)
	
	print(result)

3、题目名称:收件邮箱

Itmc杯python编程挑战赛 python编程大赛_算法_02


已知字符串str,str表示邮箱的不标准格式。


其中”.”会被记录成”dot”,”@”记录成”at”。


写一个程序将str转化成可用的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)

输入描述:

输入字符串str.(1<=strlen(str)<=1000)

输出描述:

输出转化后的格式。

输入样例:

mxyatoxcoderdotcom

输出样例:

mxy@oxcoder.com

class Solution:
	def __init__(self) -> None:
		pass
	
	def solution(self, str):
		result = None
		
		# TODO: 请在此编写代码
		result=str.replace('dot','.')
		result=result.replace('at','@',1)
		if result[0]==".":
			result="dot"+result[1:]
		if result[0]=="@":
			result="at"+result[1:]
		if result[-1]==".":
			result=result[:-1]+"dot"
		if result[-1]=="@":
			result=result[:-1]+"at"
		return result
		
if __name__ == "__main__":

	str = input().strip()

	s = Solution()
	result = s.solution(str)

	print(result)

4、题目名称:最长递增的区间长度

Itmc杯python编程挑战赛 python编程大赛_python_03


给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3

输入描述:

第一行输入整数n。(1<=n<=10000)表示数组的大小
第二行给出n个整数a.(-1e9<=a<=1e9)

输入样例:

6
5 2 3 8 1 9

输出样例:

3

class Solution:
	def __init__(self) -> None:
		pass

	def solution(self, n, arr):
		result = None

		# TODO: 请在此编写代码
		result=0
		t=1
		arr.append(-1e9-1)
		for i in range(n):
			if arr[i+1]>arr[i]:
				t+=1
			else:
				result=max(result,t)
				t=1

		return result

if __name__ == "__main__":

	n = int(input().strip())

	arr = [int(item) for item in input().strip().split()]

	s = Solution()
	result = s.solution(n, arr)

	print(result)

经验心得

不得不说,Python比Java简洁多了,灵活运用Python的库函数,可以很方便的解题。