在学习程序设计时,我们发现算法是一个难点,我们从’简单模拟’, ‘查找元素’, ‘图形输出’, ‘进制转换’, ‘字符串处理’,‘排序’,‘散列’,‘贪心’,‘二分’,‘two pointers’,‘其他’,‘数学’,‘链表’,几个角度分析算法的考试和训练策略,接下来几天我们会分题型讲解,如果你正在准备PAT甲乙级算法的考试和训练,会大有帮助,祝早日金榜题名。
在程序设计的比赛和考试中,我常用的方法有10种,求值法,递推法,递归法,枚举法,模拟法,分治法,贪心法,回溯法,构造法和动态规划。学习完这些方法后,编程水平快速提高,避免所有问题,都暴力求解
掌握了以上的方法,可以快速打开思路,然后我会解答在PAT中常见的疑惑。
题型1:输出占据若干个字符宽度,靠右或左对齐,保留若干位小数
公式:
print("{:d}{:>6.1f}".format(i,5*(i-32)/9))
第2章-10 输出华氏-摄氏温度转换表 (15 分)
输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper]、且每次增加2华氏度的华氏-摄氏温度转换表。
温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。
输入格式:
在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开。
输出格式:
第一行输出:“fahr celsius”
接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。
若输入的范围不合法,则输出"Invalid."。
a,b=input().split()
a,b=eval(a),eval(b)
if(a>b):
print("Invalid.")
else:
print("fahr celsius")
i = a
while i <= b:
print("{:d}{:>6.1f}".format(i,5*(i-32)/9))
i += 2
第2章-14 求整数段和 (15 分)
给定两个整数A和B,输出从A到B的所有整数以及这些数的和。
输入格式:
输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。
输出格式:
首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。
a,b=input().split()
a,b=eval(a),eval(b)
c=0
s=0
for j in range(a,b+1):
print("{:>5d}".format(j),end="")
c=c+1
s=s+j
if (c%5==0):
print("\n",end="")
elif(j==b):
print("\n",end="")
print("Sum = {:d}".format(s))
其他题目和源码见,zip,喜欢的话就点赞关注一下吧。