CPU数据结构 :实验一
参考:数据结构24春: 实验1
注意:此页面偶尔会存在CSS冲突问题!
试题 1
输入一个整数a, 计算并输出2倍a的值。
输入格式
一行,一个整数
输出格式
一行,一个整数
提示:
你需要写一个程序,实现从标准输入(如键盘中)输入一个整数a,然后把2*a的结果输出到标准输出(如显示器)。在Python中,输入输出可以采用内置函数input和print来实现。但是需要注意的是,从input获得的输入,Python始终将其理解为一个字符串,因此,需要根据具体情况,决定是否要进行类型转换。譬如此题就需要转换为整数后再进行乘法操作。
注意:在输入输出时,尤其是输出时,不要写任何多余的辅助信息。
对于比如下面程序中的提示语"请输入一个整数:"就是多此一举,而另一个输出提示语"所求的结果为:"甚至还会导致输出不符合题目要求,无法通过黑盒测试而报错。
a = int(input(“请输入一个整数:”))
print(“所求的结果为:”, 2 * a)
因此,仅需写出代码即可:
a = int(input())
print(2 * a)
1 | a=int(input()) |
试题 2
输入两个整数A和B, 计算并输出A+B的结果。
输入格式
一行,两个以空格隔开的整数A和B
输出格式
一行,一个整数,表示A+B的结果
提示:
在Python中,我们使用input()从键盘读入的整行信息中包含了多个数据,而且这些数据后面需要单独处理(如本题中的A、B两个彼此独立的数),那就需要把整行信息进行”分割”。在本题中,在这一行中的两个数据之间原本是采用空格隔开的,因此,我们可以采用input().split()的方式进行分割。分割得到的两个部分又都是两个字符串,因此,又都需要转换成整数,才能进行后续的相加操作。可以采用map方法批量将两个字符串转换成整数。实现代码如下:
a, b = map(int, input().split())
print(a + b)
1 | a,b = map(int,input().split()) |
试题 3
1 | word = input() |
试题 4
1 | n = eval(input()) |
试题 5
1 |
|
试题 6
1 | high,up,down = map(int,input().split()) |
试题 7
1 | n = eval(input()) |
试题 8
题目描述
给出一个正整数 $n$,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 $3$ 再加 $1$,否则除以 $2$。经过若干次循环后,最终都会回到 $1$。经过验证很大的数字($7\times10^{11}$)都可以按照这样的方式比变成 $1$,所以被称为“冰雹猜想”。例如当 $n$ 是 $20$,变化的过程是 $20\to 10\to 5\to 16\to 8\to 4\to 2\to 1$。
根据给定的数字,验证这个猜想,并从最后的 $1$ 开始,倒序输出整个变化序列。
输入格式
输入一个正整数 $n$。
输出格式
输出若干个由空格隔开的正整数,表示从最后的 $1$ 开始倒序的变化数列。
样例 #1
样例输入 #1
1 | 20 |
样例输出 #1
1 | 1 2 4 8 16 5 10 20 |
提示
数据保证,$1 \le n\le 100$。
1 | n = eval(input()) |
试题 9
题目描述
超市里有 $n(1\le n\le10^5)$ 个寄包柜。每个寄包柜格子数量不一,第 $i$ 个寄包柜有 $a_i(1\le a_i\le10^5)$ 个格子,不过我们并不知道各个 $a_i$ 的值。对于每个寄包柜,格子编号从 1 开始,一直到 $a_i$。现在有 $q(1 \le q\le10^5)$ 次操作:
1 i j k
:在第 $i$ 个柜子的第 $j$ 个格子存入物品 $k(0\le k\le 10^9)$。当 $k=0$ 时说明清空该格子。2 i j
:查询第 $i$ 个柜子的第 $j$ 个格子中的物品是什么,保证查询的柜子有存过东西。
已知超市里共计不会超过 $10^7$ 个寄包格子,$a_i$ 是确定然而未知的,但是保证一定不小于该柜子存物品请求的格子编号的最大值。当然也有可能某些寄包柜中一个格子都没有。
输入格式
第一行 2 个整数 $n$ 和 $q$,寄包柜个数和询问次数。
接下来 $q$ 个整数,表示一次操作。
输出格式
对于查询操作时,输出答案,以换行隔开。
样例 #1
样例输入 #1
1 | 5 4 |
样例输出 #1
1 | 118014 |
1 | n, q = map(int, input().split()) |
试题 10
题目描述
为了丰富人民群众的生活、支持某些社会公益事业,北塔市设置了一项彩票。该彩票的规则是:
- 每张彩票上印有 $7$ 个各不相同的号码,且这些号码的取值范围为 $1\sim33$。
- 每次在兑奖前都会公布一个由七个各不相同的号码构成的中奖号码。
- 共设置 $7$ 个奖项,特等奖和一等奖至六等奖。
兑奖规则如下:
- 特等奖:要求彩票上 $7$ 个号码都出现在中奖号码中。
- 一等奖:要求彩票上有 $6$ 个号码出现在中奖号码中。
- 二等奖:要求彩票上有 $5$ 个号码出现在中奖号码中。
- 三等奖:要求彩票上有 $4$ 个号码出现在中奖号码中。
- 四等奖:要求彩票上有 $3$ 个号码出现在中奖号码中。
- 五等奖:要求彩票上有 $2$ 个号码出现在中奖号码中。
- 六等奖:要求彩票上有 $1$ 个号码出现在中奖号码中。
注:兑奖时并不考虑彩票上的号码和中奖号码中的各个号码出现的位置。例如,中奖号码为 $23\ 31\ 1\ 14\ 19\ 17\ 18$,则彩票 $12\ 8\ 9\ 23\ 1\ 16\ 7$ 由于其中有两个号码($23$ 和 $1$)出现在中奖号码中,所以该彩票中了五等奖。
现已知中奖号码和小明买的若干张彩票的号码,请你写一个程序帮助小明判断他买的彩票的中奖情况。
输入格式
输入的第一行只有一个自然数 $n$,表示小明买的彩票张数;
第二行存放了 $7$ 个介于 $1$ 和 $33$ 之间的自然数,表示中奖号码;
在随后的 $n$ 行中每行都有 $7$ 个介于 $1$ 和 $33$ 之间的自然数,分别表示小明所买的 $n$ 张彩票。
输出格式
依次输出小明所买的彩票的中奖情况(中奖的张数),首先输出特等奖的中奖张数,然后依次输出一等奖至六等奖的中奖张数。
1 | n = eval(input()) |