[Python]百钱买百鸡问题
中国古代数学著作《算经》中提出一个问题:公鸡每只5钱,母鸡每只3钱,小鸡1钱3只。若用100钱买100只鸡(每种鸡必须都买到),输出所有的买法,要求输出结果形式如“rooster=公鸡只数,hen=母鸡只数,chick=小鸡只数”,并且按公鸡只数由小到大的顺序输出,有多组解时分行输出。
样例输入 复制
无
样例输出 复制
格式如下:
rooster=1,hen=2,chick=3
rooster=2,hen=3,chick=4
...
for rooster in range(1, 20):
for hen in range(1, 33):
chick = 100 - rooster - hen
if 5 * rooster + 3 * hen + chick / 3 == 100:
print(f"rooster={rooster},hen={hen},chick={chick}")
[Python]无重复三位数
0-4这5个数字可以组成多个无重复的三位数,请编程计算并按从小到大的顺序输出这些数字。
输出
100
101
102
103
104
110
...
440
441
442
443
444
lst=[]
for i in range(0,5):
for j in range(0,5):
for k in range(0,5):
s=i*100+j*10+k
if s>=100:
lst.append(s)
for x in lst:
print(x)
[Python]完数输出
一个数如果等于它的因子之和(包含1不包含自身)则称这个数为完数,例如6,6=1+2+3,编程计算2-输入整数n(包含n)之内的所有完数并输出。
输入
一个正整数 n
输出
2 到 n 之间的所有完数(每行一个)
样例输入 复制
10
样例输出 复制
6
n=int(input())
for i in range(2,n):
s=0 #放在此处,如果放在前面将会一直累加,导致瘫痪
for j in range(1,i):
if i%j==0:
s+=j
if s==i:
print(i)
n = int(input())
for i in range(2, n + 1):
factors = [j for j in range(1, i) if i % j == 0]
if sum(factors) == i:
print(i)
[Python]判断素数
给定多个大于 1 的整数,判断是否为素数
输入
输入多行,每行是一个大于 1 的整数或字母 q
输出
对于每一行输入:如果该行是正整数,那么输出一行,输出内容为 T 或 F,代表这个正整数是或不是素数;如果该行是字母 q,则退出程序
样例输入 复制
8888
123
29
q
样例输出 复制
F
F
T
while True:
s = input()
if s == 'q':
break
else:
num = int(s)
is_prime = True
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
print('T')
else:
print('F')
[Python循环]数字求和
求 s = t + tt + ttt + tttt + tt...t 的值,其中 t 是一个小于 10 的自然数,例如 2 + 22 + 222 + 2222 + 22222 (此时共有5个数相加),几个数相加也由键盘输入控制。
输入
输入两个整数,由一个空格隔开,前一个数字代表题目中的 t,另一个数字代表有几个数相加,输出累加和。
输出
输出题目中S的值
t, n = map(int, input().split())
s = 0
num = 0
for i in range(n):
num = num * 10 + t
s += num
print(s)
[Python]查找 A 类数
一个正整数的二进制表示中若 1 的个数多于 0 的个数,则称该整数为 A 类数。例如: 2 的二进制表示是 10,其中 1 的个数不多于 0 的个数,因此 2 不是 A 类数;13 的二进制表示是 1101,其中 1 的个数多于 0 的个数,因此 13 是 A 类数。
输入
输入两个用空格隔开的整数 N1 N2
输出
输出区间 [N1, N2] 中的所有 A 类数(每行一个),若该区间内没有 A 类数,则输出 Not Found
样例输入 复制
1 20
样例输出 复制
1 3 5 6 7 11 13 14 15 19
N1, N2 = map(int, input().split())
found = False
for num in range(N1, N2 + 1):
binary_str = bin(num)[2:]
count_1 = binary_str.count('1')
count_0 = binary_str.count('0')
if count_1 > count_0:
print(num)
found = True
if not found:
print("Not Found")