求出10个“韩信点兵数”,该数除以3余2, 除以5余3 , 除以7余4 。(例如53 , 158 , 263 …) 上传源代码文件。 要求: 无输入。 输出格式为(最后一行末尾必须换行): 输出10个数,数与数之间以一个逗号分隔
时间: 2023-05-26 10:04:36 浏览: 167
```python
# Brute Force
n = 1
count = 0
ans = []
while count < 10:
if n % 3 == 2 and n % 5 == 3 and n % 7 == 4:
ans.append(n)
count += 1
n += 1
print(*ans, sep=',', end='\n')
```
```python
# Chinese Remainder Theorem
def CRT(cond):
M = 1
for c in cond:
M *= c[1]
ans = 0
for c in cond:
Mi = M // c[1]
ans += c[0] * Mi * pow(Mi, -1, c[1])
return ans % M
cond = [(2, 3), (3, 5), (4, 7)]
ans = []
for i in range(10):
ans.append(CRT(cond))
cond[0] = (cond[0][0] + 3, cond[0][1])
cond[1] = (cond[1][0] + 5, cond[1][1])
cond[2] = (cond[2][0] + 7, cond[2][1])
print(*ans, sep=',', end='\n')
```
两种方法都可以得到正确结果,第一种方法是暴力枚举的,第二种方法是用中国剩余定理合并余数同余方程,计算量更小。
阅读全文