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, 0002 ≤ 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]))

 








---恢复内容结束---

posted @ 2018-11-12 15:17  wangheng1409  阅读(164)  评论(0)    收藏  举报