本次上机涉及内容:Python基础(I)(II)
等差数列末项计算
描述
给出一个等差数列的前两项 $a_1,a_2$,求第 $n$ 项是多少。
输入
一行,包含三个整数 $a_1,a_2,n$ 。$-100 \leq a_1,a_2 \leq 100,0 < n \leq 1000$ 。
|
|
输出
一个整数,即第 $n$ 项的值。
|
|
Solution
直接使用公式模拟即可。
|
|
苹果和虫子
描述
你买了一箱 $n$ 个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每 $x$ 小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过 $y$ 小时你还有多少个完整的苹果?
输入
输入仅一行,包括 $n,x$ 和 $y$ (均为整数)。输入数据保证 $y \leq n \cdot x$ 。
|
|
输出
输出也仅一行,剩下的苹果个数
|
|
Solution
注意本题需要求完成的苹果数,因此直接按照题意模拟即可。
|
|
与圆相关的计算
描述
给出圆的半径,求圆的直径、周长和面积。
输入
输入包含一个实数 $r(0 < r \leq 10000)$ ,表示圆的半径。
|
|
输出
输出一行,包含三个数,分别表示圆的直径、周长、面积,数与数之间以一个空格分开,每个数保留小数点后4位。
|
|
Solution
这里的 $\pi$ 按照保留小数应该取 $3.14159$ ,而保留小数点后四位可以使用printf("%.4lf",...)的语句,接下来模拟即可,注意Python的默认print是换行,需要加上end=' '改变它的行为。
|
|
判断能否被3,5,7整除
描述
给定一个整数,判断它能否被3,5,7整除,并输出以下信息:
1、能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格);
2、只能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者 3 7或者5 7,中间用空格分隔);
3、只能被其中一个数整除(输出这个除数);
4、不能被任何数整除,输出小写字符‘n’,不包括单引号。
输入
输入一行,包括一个整数。
|
|
输出
输出一行,按照描述要求给出整数被3,5,7整除的情况。
|
|
Solution
就是条件判断,逐步按题意模拟即可。
|
|
奇偶ASCII值判断
描述
任意输入一个字符,判断其ASCII是否是奇数,若是,输出YES,否则,输出NO。
例如,字符A的ASCII值是65,则输出YES,若输入字符B(ASCII值是66),则输出NO。
输入
输入一个字符。
|
|
输出
如果其ASCII值为奇数,则输出YES,否则,输出NO。
|
|
Solution
首先,应该使用ord函数来获取某个字符的ASCII值。
其次,因为输入的字符串可能是'\n',它会被py识别为换行符而非输入内容。
此时,要特判输入字符串是否为空串,即len=0。
|
|
判断闰年
描述
判断某年是否是闰年。
输入
输入只有一行,包含一个整数 $a(0 < a < 3000)$ 。
|
|
输出
一行,如果公元 $a$ 年是闰年输出Y,否则输出N。
|
|
Solution
按照题意模拟即可。
|
|
苹果与虫子2
你买了一箱 $n$ 个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每 $x$ 小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过 $y$ 小时你还有多少个完整的苹果?
输入
输入仅一行,包括 $n,x$ 和 $y$(均为整数)。
|
|
输出
输出也仅一行,剩下的苹果个数。
|
|
Solution
按照题意模拟即可,注意本题没有 $y \leq n \cdot x$ 的限制,因此需要特判。
|
|
满足条件的数累加
描述
将正整数 $m$ 和 $n$ 之间(包括 $m$ 和 $n$ )能被 $17$ 整除的数累加。其中, $0 < m < n < 1000$ 。
输入
一行,包含两个整数 $m$ 和 $n$ ,其间,以一个空格间隔。
|
|
输出
输出一行,包行一个整数,表示累加的结果。
|
|
Solution
使用循环,按照题意模拟即可。
|
|
统计满足条件的四位数个数。
描述
给定若干个四位数,求出其中满足以下条件的数的个数:
个位数上的数字减去千位数上的数字,再减去百位数上的数字, 再减去十位数上的数字的结果大于零。
输入
输入为两行,第一行为四位数的个数 $n$ ,第二行为 $n$ 个的四位数,数与数之间以一个空格分开。 $(n <= 100)$
|
|
输出
输出为一行,包含一个整数,表示满足条件的四位数的个数。
|
|
Solution
使用循环,按照题意模拟即可。
|
|
开关灯
描述
假设有 $N$ 盏灯( $N$ 为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于开启状态;有 $M$ 个人( $M$ 为不大于 $N$ 的正整数)也从1到 $M$ 依次编号。
第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做相反处理(即,将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反处理。
请问:当第 $M$ 个人操作之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用逗号间隔。
输入
输入正整数 $N$ 和 $M$ ,以单个空格隔开。
|
|
输出
顺次输出关闭的灯的编号,其间用逗号间隔。
|
|
Solution
看这个数据范围,使用循环直接遍历可以过,不需要使用容斥什么的。
但是,这里首先要说明开数组的方法,与C++中不同,Python中无法使用int a[n]这种语法开数组,因此应该用乘法进行实现。
同时,最后的join与遍历,也是Python方便的地方之一,这在上期博文中讲过了。
|
|