在学习程序设计时,我们发现算法是一个难点,我们从’简单模拟’, ‘查找元素’, ‘图形输出’, ‘进制转换’, ‘字符串处理’,‘排序’,‘散列’,‘贪心’,‘二分’,‘two pointers’,‘其他’,‘数学’,‘链表’,几个角度分析算法的考试和训练策略,接下来几天我们会分题型讲解,如果你正在准备PAT甲乙级算法的考试和训练,会大有帮助,祝早日金榜题名。
在程序设计的比赛和考试中,我常用的方法有10种,求值法,递推法,递归法,枚举法,模拟法,分治法,贪心法,回溯法,构造法和动态规划。学习完这些方法后,编程水平快速提高,避免所有问题,都暴力求解
掌握了以上的方法,可以快速打开思路,然后我会解答在PAT中常见的疑惑。
题型1:输出精确到小数点后若干位:
模板:
print("sum = {:.6f}".format(s))
第2章-5 求奇数分之一序列前N项和 (15 分)
本题要求编写程序,计算序列 1 + 1/3 + 1/5 + … 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
a=int(input())
s=0
for j in range(1,a+1):
s=s+1/(2*j-1)
print("sum = {:.6f}".format(s))
题型2:输入格式中带逗号:
公式:
print("{}".format(s))
第2章-7 产生每位数字相同的n位数 (30 分)
读入2个正整数A和B,1<=A<=9, 1<=B<=10,产生数字AA…A,一共B个A
输入格式:
在一行中输入A和B。
输出格式:
在一行中输出整数AA…A,一共B个A
a,b=input().split(",")
s=0
b=int(b)
a=int(a)
for j in range(1,b+1):
s=s*10+1
s=s*a
print("{}".format(s))
综合例题:
第2章-9 比较大小 (10 分)
本题要求将输入的任意3个整数从小到大输出。
输入格式:
输入在一行中给出3个整数,其间以空格分隔。
输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。
a,b,c=input().split()
a,b,c=eval(a),eval(b),eval(c)
if b<=a:
a,b=b,a
if c<=a:
a,c=c,a
if c<=b:
b,c=c,b
print("{}->{}->{}".format(a,b,c))
其他题目和源码见,zip,喜欢的话就点赞关注一下吧。