code
20181112200040011100310002071674
参考
1.求最大公约数:
def gcd(x, y): while y: x, y = y, x % y return x print(gcd(11,18))
2.求0-100 的质数
primes = [1]*101 primes[0] = primes[1] = 0 for i in range(2,101): if primes[i]: for j in range(i*2,101,i): primes[j] = 0 print(primes)
3.行走问题
有 N 个人,编号为 1 ∼ N。初始时,只有编号为 1 的人听说过 SnackDown。每天,听说过 SnackDown 的人都会和其他人说这个比赛。第 i 个人每天可以告诉 Ai 个其他的人。人们会按照编 号顺序去告诉那些还没听说过 SnackDown 的人,而且不会有两个人同时告诉一个人。每个人只有 在听说了 SnackDown 之后的下一天才能告诉别人这个比赛(不过编号为 1 的人从第 1 天开始就可 以说了)。要让所有人都知道 SnackDown 至少需要多少天? 输入格式 输入的第一行包含一个整数 T,代表测试数据的组数。接下来是 T 组数据。 每组数据的第一行包含一个整数 N。第二行包含 N 个整数 A1, A2, . . . , AN。 输出格式 对于每组数据,输出一行,包含一个整数,代表所需的天数。 数据范围 • 1 ≤ T ≤ 1, 000 • 2 ≤ N ≤ 105 • ∑N ≤ 106 • 0 ≤ Ai ≤ N • A1 ≥ 1 样例数据 输入 2 7 2 1 1 5 5 5 5 5 5 1 3 2 1 输出 2 1 样例解释 第一组数据:第 1 天,编号为 1 的人会告诉编号为 2 和 3 的人。第 2 天,前 3 个人都知道了, 因此他们这天可以告诉 2 + 1 + 1 = 4 个人。因此,让所有人都知道 SnackDown 只需要两天。 第二组数据:编号为 1 的人一天可以告诉 5 人,因此第一天内所有人就都知道了。 def solve(): days = 0 idx = 1 cap = a[0] while idx < n: days += 1 inc = sum(a[idx:idx+cap]) idx = idx + cap cap += inc print(days) t = int(input()) for _ in range(t): n = int(input()) a = [int(x) for x in input().split()] solve()
4.求前 n名(包含并列)
for _ in range(int(input())): n,k = [int(x) for x in input().split()] s = [int(x) for x in input().split()] s.sort(reverse=True) print(k + s[k:].count(s[k-1]))
---恢复内容结束---

浙公网安备 33010602011771号