校园ACM--总结

题目1–字母矩阵

题目详情

n阶字母矩阵是由n*n的英文小写字母组成的方阵,满足:

每一条副对角线上的字母相同
不同对角线上的字母由左到右递增(从aa开始)
给定nn,输出nn阶字母矩阵

示例

输入:一个整数n(n \leq 13)n(n≤13)
输出:n 阶字母矩阵
输入:2
输出:
ab
bc
输入:2
输出:
ab
bc
输入:3
输出:
abc
bcd
cde
输入:4
输出:
abcd
bcde
cdef
defg

解题代码

思路

  1. 可以观察每一排都是叉开一个字符输出的
  2. 那么可以利用字符串的切片性质来完成
  3. 那么只需要一层循环即可完成

代码

def matrix(n):
	if 0 < n <=13:
		str1 = 'abcdefghijklmnopqrstuvwxyz'
		start = 0
		end = n
		while n:
			print(str1[start:end])
			start += 1
			end += 1
			n -= 1
	else:return 0

if __name__ == '__main__':
	num = input()
	matrix(int(num))

运行结果

在这里插入图片描述

题目2–二进制反转

题目详情

给一个[0,2^32]内的(32位无符号)十进制数,求其二进制表示反转后对应的十进制数

示例

输入:一个整数 n (0 \leq n &lt; 2^{32})n(0≤n<2^32)
输出:一个整数,n二进制表示翻转后对应的十进制数
输入:1
输出:2147483648

解题代码

思路

  1. 首先把十进制转换为32为二进制字符串表示
  2. 转换为字符串的好处是字符串的反转比较容易
  3. 然后再转换为十进制

代码

def binary_inversion(n):
	if 0 <= n < 2**32:
		str_ten = '{:032b}'.format(n)
		resver_ten = str_ten[::-1]
		two = int(resver_ten,2)
		print(two)
		return two
	else:return 0

if __name__ == '__main__':
	num = input()
	nums = binary_inversion(int(num))

运行结果

在这里插入图片描述

体会

学校这个前面两道题还是很简单,本来是两天时间的,结果第一天我去科目一考试去了,然后就没有做,第二天下午来做的两道题,还做了一道题,时间复杂度超时了,实在想不出了,而且感觉自己解题的过程比较刁钻,不按常规思路走。还待学习,加油。

猜你喜欢

转载自blog.csdn.net/qq_39722988/article/details/89438664
今日推荐