Math
a + b >= c, 不构成三角形
a ** 2 + b ** 2 < c **2 ,钝角三角形
中位数的定义
中位数是指将一个数组排序后,位于数组中间位置的值。如果数组长度为奇数,则中位数是中间的那个数;如果数组长度为偶数,则中位数是中间两个数的平均值。
分数约分问题:
求出其gcd,让后除之
1 + 2 + 3 +4 +......+ n-1 + n 等价 (1 + n) * n / 2
质数 别称为 素数 只有1 和 它本身 2个除数
极差的意思是一组数中的最大值减去最小值的差。
集合中每个元素 存在 或 不存在,只有 1 种状态,如果集合有n个元素
那么子集就是(2 ** n ) - 1(空集)
那么求其全部子集元素的和:每个元素存在 2 ** n-1 次,相加即可
围成圈的数学问题:
如果 10 人围城圈,10 人下标依次为 1~10,给出数从0加减,左减,右加
如果n < 1,那么 n = n + 10,n > 10, 那么,n = n - 10
so fun problem!
其实如果循环的话 取余循环数简便!! arr[a%b]
二维数组反转下标规律:
顺时针90° nli[j][n - i - 1] = li[i][j]
逆时针90° nli[n - j - 1][i] = li[i][j]
一个正整数一般可以分为几个互不相同的自然数的和,现在你的任务是将指定的正整数
分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。给出数字组排问题
例如 89,75,8,6,4 (elem 都为string)
组合为最大的数怎么排序?
def compare(a, b):
return int(b + a) - int(a + b)
返回正数,b在a前
返回负数,a在b前
- 如果返回值为负数,Python 将会认为第一个参数应该排在第二个参数的前面。
- 如果返回值为零,表示两个参数相等,保持它们原来的顺序。
- 如果返回值为正数,Python 将会认为第二个参数应该排在第一个参数的前面。
- 经典定义不会什么都白瞎
完整代码如下:
from functools import cmp_to_key
def compare(a, b):
return int(b + a) - int(a + b)
n = int(input())
s = input().strip().split()
s.sort(key = cmp_to_key(compare))
res = ''.join(s)
if res[0] == '0':
print(0)
else:
print(res)
1 x 1 的正方形组成 n行m列:
矩阵个数:1 * 1的 + 2 * 1的+ 1 * 2的 + ......
化简为:
总个数 = n *(n + 1)* m * (m + 1) // 4
而正方形个数:
总正方形个数=∑i=1min(n,m)(n−i+1)×(m−i+1)
所以长方形个数(不包含正方形个数)
矩阵个数 - 正方形个数
格子走,有多少方案?
C(n+m,n)
一: 卡特兰数
假设我们有一个大小为 的队列。我们要计算这个队列的所有可能的随机组合数量。我们可以考虑第一个元素在队列中的位置,它有 种可能的位置。假设我们将第一个元素放在第 个位置,那么剩下的 个元素可以在 个位置中任意排列。
因此,队列的随机组合数量可以表示为:
其中, 表示大小为 的队列的随机组合数量。这是一个典型的卡特兰数的递归定义。通过这个递推式,我们可以计算出每个 对应的组合数量。最终,这个序列的结果就是卡特兰数序列。
评论
发表评论