R7-7 折纸 分数 5 作者 DS课程组 单位 临沂大学 一张足够大的长方形纸,每次都对折长边(如果是正方形,则任选一边),例如两条边长分别为10和9的长方形纸对折后边长为5和9,再对折一次后边长为5和4(长度为奇数对折后向下取整)。对于给定的两条边长和对折次数,求最终边长,从大到小输出。 输入格式: 输入在一行中给出3个正整数 a,b,n(均小于10000),分别为两条边的长度和对折次数。 输出格式: 在一行中按从大到小的顺序输出对折n次后两条边长的长度,中间用空格分隔。 输入样例1: 3 2 1 输出样例1: 2 1 输入样例2: 3 2 10
时间: 2024-03-17 18:43:17 浏览: 17
可以使用以下代码实现:
```python
a, b, n = map(int, input().split())
# 定义一个函数,用于计算对折一次后边长的长度
def fold(x, y):
return y, (x + y) // 2
# 对折 n 次
for i in range(n):
if a > b:
a, b = fold(a, b)
else:
b, a = fold(b, a)
# 输出结果,从大到小排序
if a > b:
print(a, b)
else:
print(b, a)
```
首先,将输入的字符串转换为整型,得到两条边的长度 a 和 b,以及对折次数 n。
然后,定义一个函数 fold(x, y),用于计算对折一次后边长的长度。如果长边为 x,短边为 y,则对折一次后,长边变为 y,短边变为 (x+y)//2。需要注意,当边长为奇数时,对折后需要向下取整。
接着,对折 n 次。每次将长边和短边传入 fold 函数中,得到对折后的新的长边和短边。如果长边为 a,短边为 b,则需要判断哪个边是长边,将长边和短边传入 fold 函数中。
最后,输出结果,从大到小排序。如果 a 大于 b,则输出 a 和 b,否则输出 b 和 a。
相关问题
R7-6 输出二维数组每一列的最大值 分数 10 作者 DS课程组 单位 临沂大学 本题要求编写程序,输出一个给定的m×n矩阵各列元素的最大值。
以下是一个可能的解法:
```python
m, n = map(int, input().split())
matrix = []
for i in range(m):
row = list(map(int, input().split()))
matrix.append(row)
# 求各列的最大值
max_values = []
for j in range(n):
max_value = matrix[0][j]
for i in range(1, m):
if matrix[i][j] > max_value:
max_value = matrix[i][j]
max_values.append(max_value)
# 输出结果
for max_value in max_values:
print(max_value, end=" ")
```
首先读入矩阵的大小和各个元素,存储在一个二维列表 `matrix` 中。然后对于每一列,遍历该列的所有元素,找到最大值,存储在列表 `max_values` 中。最后按顺序输出 `max_values` 中的元素即可。
值得注意的是,本题要求在输出每个最大值时,每两个数之间都要有一个空格,因此我们用 `end=" "` 来指定输出末尾的字符为一个空格。
R7-3 统计字符出现次数__[6-2] 分数 10 作者 qhyu 单位 上海海洋大学 统计字符出现次数 统计输入字符串中各字符出现的次数,并按字符的ASCII码顺序输出统计结果。 输入样例: 在这里给出一组输入。例如:
好的,下面是对应的程序代码:
```
s = input("请输入一个字符串:")
d = {}
for ch in s:
if ch in d:
d[ch] += 1
else:
d[ch] = 1
for key in sorted(d.keys()):
print("{}:{}".format(key, d[key]))
```
程序首先使用`input()`函数获取用户输入的字符串,然后使用一个字典`d`来统计各个字符出现的次数。遍历输入字符串中的每个字符,如果该字符已经在字典中出现过,则将其对应的值加1;否则,在字典中新建一个键值对,初始值为1。最后,使用`sorted()`函数按字符的ASCII码顺序对字典的键进行排序,并遍历输出统计结果。