输入在一行中给出3个正整数 a,b,n(均小于10000),分别为两条边的长度和对折次数。 输出格式: 在一行中按从大到小的顺序输出对折n次后两条边长的长度,中间用空格分隔。
时间: 2024-03-17 15:41:22 浏览: 42
好的,那我来完善一下代码:
```python
def fold_paper(length1, length2, n):
if n == 0:
return (max(length1, length2), min(length1, length2))
else:
l1, l2 = length1, length2 // 2
len1_1, len2_1 = fold_paper(l1, l2, n-1)
len1_2, len2_2 = fold_paper(l1, length2-l2, n-1)
return (max(len1_1, len1_2), max(len2_1, len2_2))
a, b, n = map(int, input().split())
result = fold_paper(a, b, n)
print(result[0], result[1])
```
这里我们首先读入三个整数 a、b 和 n,然后调用 `fold_paper` 函数得到对折 n 次后两条边的长度,最后按照题目要求输出即可。
相关问题
一张足够大的长方形纸,每次都对折长边(如果是正方形,则任选 边),例如两条边长分别为10和9的长方形纸对折后边长为5和9,再对 折一次后边长为5和4(长度为奇数对折后向下取整)。对于给定的两 条边长和对折次数,求最终边长,从大到小输出。 输入格式: 输入在一行中给出3个正整数 a,b,n(均小于10000),分别为两条 边的长度和对折次数。 输出格式: 在一行中按从大到小的顺序输出对折n次后两条边长的长度,中间用空 格分隔。
以下是Python的代码实现:
```python
a, b, n = map(int, input().split())
for i in range(n):
if a > b:
b = b + a // 2
else:
a = a + b // 2
print(max(a, b), min(a, b))
```
首先读入三个正整数a,b,n,表示长方形的两个边长和对折的次数。然后使用一个循环,每次对折长边,直到对折n次为止。对于每次对折,如果a>b,则将b加上a的一半,否则将a加上b的一半。最后输出对折n次后两条边长的长度,按照从大到小的顺序输出。
使用python实现一张足够大的长方形纸,每次都对折长边(如果是正方形,则任选一边),例如两条边长分别为10和9的长方形纸对折后边长为5和9,再对折一次后边长为5和4(长度为奇数对折后向下取整)。对于给定的两条边长和对折次数,求最终边长,从大到小输出。 输入格式: 输入在一行中给出3个正整数 a,b,n(均小于10000),分别为两条边的长度和对折次数。 输出格式: 在一行中按从大到小的顺序输出对折n次后两条边长的长度,中间用空格分隔。
好的,这个问题可以使用 Python 编写程序来解决。以下是代码实现:
```python
a, b, n = map(int, input().split())
for i in range(n):
if a > b:
a = a // 2
else:
b = b // 2
print(max(a, b), min(a, b))
```
首先,我们使用 `map` 函数将输入的三个整数分别赋值给 `a`,`b` 和 `n`。然后,我们使用一个循环来模拟对折的过程,每次都对折长边(如果是正方形,则任选一边)。最后,我们输出经过 `n` 次对折后的两条边长,从大到小排列。
注意,我们使用了 `max` 和 `min` 函数来确保输出的两个边长是从大到小排列的。
阅读全文