1.求出1~599中能被3整除,且至少有一位数字为5的所有整数。如15、51、513均是满足条件的整数。 要求: 1,每行输出6个数字。 2,最后输出满足条件的数字的个数 3,分别使用单循环与多重循环实现 2.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,要求换成30张小钞票,每种面值的至少一张,编程输出所有可能的换法,程序应适当考虑减少重复次数。
时间: 2023-07-16 13:15:16 浏览: 174
1. 使用单循环实现:
```python
count = 0 # 计数器
for i in range(1, 600):
if i % 3 == 0 and '5' in str(i):
print(i, end='\t')
count += 1
if count % 6 == 0:
print()
print('\n共有{}个符合条件的整数。'.format(count))
```
使用多重循环实现:
```python
count = 0 # 计数器
for i in range(1, 600):
if i % 3 == 0:
for j in str(i):
if j == '5':
print(i, end='\t')
count += 1
if count % 6 == 0:
print()
break
print('\n共有{}个符合条件的整数。'.format(count))
```
2. 使用递归实现:
```python
def exchange(money, nums):
if sum(nums) == 30:
if all(num > 0 for num in nums):
print('{}张50元,{}张20元,{}张10元,{}张5元'.format(*nums))
elif money > 0:
exchange(money-50, nums+[1, 0, 0, 0])
exchange(money-20, nums+[0, 1, 0, 0])
exchange(money-10, nums+[0, 0, 1, 0])
exchange(money-5, nums+[0, 0, 0, 1])
exchange(500, [])
```
使用循环实现:
```python
for a in range(1, 20):
for b in range(1, 24):
for c in range(1, 30):
for d in range(1, 31):
if 50*a + 20*b + 10*c + 5*d == 500:
print('{}张50元,{}张20元,{}张10元,{}张5元'.format(a, b, c, d))
break
```
以上两种方法都可以得到所有可能的换法,且不重复。
阅读全文