第一题级数求和1.1 题目描述已知。显然对于任意一个整数 k当n足够大的时候。现给出一个整数k要求计算出一个最小的 n使得。1.2 输入格式一个正整数 k。1.3 输出格式一个正整数n。1.4 输入输出样例输入 #1输出 #1121.5 可参考代码k int(input()) # 输入目标值 k a_n 1 # 当前要累加的项初始为第 1 项1/1 1 sum 0 # 用来保存累加和 i 1 # 分母/项数控制变量初始为 1 # 当当前累加和还没有超过 k 时继续累加下一项 while sum k: sum a_n # 把当前项 a_n 加到总和 sum 中 i 1 # 准备计算下一项分母加 1 a_n 1 / i # 下一项为 1/i即 1/2、1/3、1/4 ... # 循环结束时sum 已经大于 k # 此时 i 比实际累加的项数多 1因此输出 i-1 print(i - 1)第二题陶陶摘苹果2.1 题目描述陶陶家的院子里有一棵苹果树每到秋天树上就会结出 $10$ 个苹果。苹果成熟的时候陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳当她不能直接用手摘到苹果的时候就会踩到板凳上再试试。现在已知10个苹果到地面的高度以及陶陶把手伸直的时候能够达到的最大高度请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果苹果就会掉下来。2.2 输入格式输入包括两行数据。第一行包含10个100到 200 之间包括 100和 200的整数以厘米为单位分别表示 10 个苹果到地面的高度两个相邻的整数之间用一个空格隔开。第二行只包括一个 100 到120 之间包含 100 和 120的整数以厘米为单位表示陶陶把手伸直的时候能够达到的最大高度。2.3 输出格式输出包括一行这一行只包含一个整数表示陶陶能够摘到的苹果的数目。2.4 输入输出样例输入 #1输出 #1100 200 150 140 129 134 167 198 200 11111052.5 可参考代码my_list input().split() # 输入一行苹果的高度按空格分割成字符串列表 height int(input()) 30 # 输入手能够到的高度再加上板凳高度 30得到最大可摘高度 i 0 # 初始化变量 i注意后面 for 循环会重新赋值 count 0 # 用来统计能够摘到的苹果数量 for i in my_list: # 遍历列表中的每一个苹果高度此时 i 是字符串 apple_height int(i) # 将当前苹果高度转换成整数 if apple_height height: # 如果苹果高度不超过最大可摘高度 count 1 # 说明能够摘到计数器加 1 print(count) # 输出能够摘到的苹果总数第三题校门外的树3.1 题目描述某校大门外长度为 l 的马路上有一排树每两棵相邻的树之间的间隔都是 1 米。我们可以把马路看成一个数轴马路的一端在数轴0的位置另一端在l 的位置数轴上的每个整数点即 0,1,2,···,l都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数区域之间可能有重合的部分。现在要把这些区域中的树包括区域端点处的两棵树移走。你的任务是计算将这些树都移走后马路上还有多少棵树。3.2 输入格式第一行有两个整数分别表示马路的长度 $l$ 和区域的数目 $m$。接下来 $m$ 行每行两个整数 $u, v$表示一个区域的起始点和终止点的坐标。3.3 输出格式输出一行一个整数表示将这些树都移走后马路上剩余的树木数量。3.4 输入输出样例输入 #1输出 #1500 3150 300100 200470 4712983.5 说明/提示【数据范围】保证区域之间没有重合的部分。3.6 可参考代码l, m input().split() l int(l) m int(m) # 一共有 0~l 共 l1 个点初始都有树 trees [True] * (l 1) # 先读入所有区间把区间内的树标记为移走 for _ in range(m): u, v input().split() u int(u) v int(v) for k in range(u, v 1): # 包括两端点 trees[k] False # 再统计剩下的树 count 0 for i in range(l 1): if trees[i]: count 1 print(count)以上代码可供大家参考如果大家有更好的方法也可以分享出来哈。题目来源为P1035 [NOIP 2002 普及组] 级数求和 - 洛谷、P1046 [NOIP 2005 普及组] 陶陶摘苹果 - 洛谷、P1047 [NOIP 2005 普及组] 校门外的树 - 洛谷