A.打印菱形图案

1
2
3
4
5
6
n=int(input())
a=n//2
for i in range(-a,a+1):
c=abs(i)
print(c*" " ,end="")
print((2*a+1-2*c)*"*")

D.来,关个灯

1
2
3
4
5
n = int(input())
for i in range(1, n):
if (i * i > n):
break;
print(i * i, end = ' ')

E.矩形的数量

1
2
3
4
5
6
7
8
9
10
m,n,k=map(int,input().split())
nn=n+1
yi=(nn-k)*(k-1)
a=0
if m%2==0:
a=(1+m)*(m//2)
else:
a=(1+m)*(m//2)+int(m/2+1)
yyy=yi*a
print((yyy)%1000000007)

F.这个最大乘积怎么求?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
"""
根据题意和贪心可以知道我们把n尽可能的分最多分(n>1)时乘积最大 然后分出刚好和比n大的几个数(因为1对乘积没有贡献)
拿样例中的10举例从2开始分为sum = 2 + 3 + 4 + 5 , 此时和 > 10
sum - n ≠ 1
将 sum - n 在列表中去掉 sum - n = 4 所以左后为2 3 5
n = 13时 sum = 2 + 3 + 4 + 5
sum - n = 1
我们思考把余数 1 分给谁最后的乘积最大
通过数论很简单就知道把余数给更大的数乘积会更大,而且题目还有个条件“将指定的正整数 n 分解成若干个互不相同的自然数的和”
所以 1 要从后往前加
此时去掉最小的 2 把 1 + 给 5 得 3 4 6
"""
def maximize_product(n):
# 初始化结果列表和当前要分解的数
sum = 0
list = []
tmp = 0
count = 0
# 拆分出相连的自然数
for i in range(2, 10000):
list.append(i)
tmp = i
sum += i
count += 1
if sum + i + 1 > n:
break
sum += tmp + 1
list.append(tmp + 1)
x = sum - n
if x == 1:
list[count + 1] += 1
list.remove(2)
elif x > 0:
list.remove(x)
ans = 1
for i in list:
ans *= i
print(i, end=" ")
print()
print(int(ans))
# 读取输入的正整数n
n = int(input())

# 调用函数来分解n并计算最大乘积
maximize_product(n)

H.解放战俘
方法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 用递归每次递归将左上方的正方形清零,在递归其他三个正方形,当正方形的边长为2时结束递归。
def fun(a, b, l):
if l == 1:
return
for i in range(int(a), int(a)+int(l/2)):
for j in range(int(b), int(b)+int(l/2)):
list[i][j] = 0
fun(a + l / 2, b, l / 2)
fun(a, b + l/2, l / 2)
fun(a + l / 2, b + l / 2, l / 2)

n = int(input())
p = 2 ** n
list = [[ 1 for i in range(p)]for j in range(p)]
fun(0,0, p)
for i in range(p):
print(' '.join(map(str, list[i])))

方法二:

1
2
3
4
5
6
7
8
9
10
#杨辉三角
n = int(input())
for i in range(1 << n):
for j in range(1 << n):
if (i | j) != ((1 << n) - 1):
ans = 0
else:
ans = 1
print(ans, end=" ")
print()

I.数楼梯

1
2
3
4
5
6
7
8
n = int(input())
a1 = 1
a2 = 1
for i in range(2, n + 1):
a3 = a2
a2 = a1 + a2
a1 = a3
print(a2)