Python3 ural水题集锦

1025. Democracy in Danger

class InputReader():
    def nextInt(self):
        return  int(input().strip())

    def nextInts(self):
        ints = []
        str = input().strip().split()
        for s in str:
            if (s is None) or (len(s) == 0):
                continue
            ints.append(int(s))
        return ints

if __name__ == '__main__':
    reader = InputReader()
    n = reader.nextInt()
    nums = reader.nextInts()
    nums.sort()
    sum = 0
    for i in range(0 , int((n+1)/2)):
        sum += (nums[i]+1)/2
    print(int(sum))

1068. Sum

if __name__ == '__main__':
    s = input().strip().split(" ")
    n = int(s[0])
    k = int(len(s[1]))
    sum = 1
    for i in range(n , 0 , -k):
        sum *= i
    print(sum)

1020. Rope

import math
class InputReader():
    def nextInt(self):
        return  int(input().strip())

    def nextInts(self):
        ints = []
        str = input().strip().split()
        for s in str:
            if (s is None) or (len(s) == 0):
                continue
            ints.append(int(s))
        return ints

    def nextFloats(self):
        floats = []
        str = input().strip().split()
        for s in str:
            if (s is None) or (len(s) == 0):
                continue
            floats.append(float(s))
        return floats

if __name__ == '__main__':
    reader = InputReader()
    f = reader.nextFloats() ;
    n = int(f[0])
    r = f[1]
    p = []
    for i in range(n):
        f = reader.nextFloats()
        p.append(f)
    sum = math.pi * 2 * r
    for i in range(0 , n):
        sum += math.sqrt( (p[i][0] - p[(i+1)%n][0])**2  +  (p[i][1] - p[(i+1)%n][1])**2  )
    print("%.2f" % (sum)

1079. Maximum

import math
class InputReader():
    def nextInt(self):
        return  int(input().strip())

    def nextInts(self):
        ints = []
        str = input().strip().split()
        for s in str:
            if (s is None) or (len(s) == 0):
                continue
            ints.append(int(s))
        return ints

    def nextFloats(self):
        floats = []
        str = input().strip().split()
        for s in str:
            if (s is None) or (len(s) == 0):
                continue
            floats.append(float(s))
        return floats

if __name__ == '__main__':
    reader = InputReader()
    n = 100000
    a = [0] * n
    dp = [0] * n
    a[0] = dp[0] = 0
    a[1] = dp[1] = 1
    for i in range(2 , n):
        if i % 2 == 0:
            a[i] = a[int(i/2)]
        else:
            a[i] = a[int(i/2)] + a[int(i/2 + 1)]
        dp[i] = max(dp[i-1] , a[i])

    while True:
        n = reader.nextInt()
        if n == 0 :
            break
        print(dp[n])


1086. Cryptography

import math
class InputReader():
    def nextInt(self):
        return  int(input().strip())

    def nextInts(self):
        ints = []
        str = input().strip().split()
        for s in str:
            if (s is None) or (len(s) == 0):
                continue
            ints.append(int(s))
        return ints

    def nextFloats(self):
        floats = []
        str = input().strip().split()
        for s in str:
            if (s is None) or (len(s) == 0):
                continue
            floats.append(float(s))
        return floats

if __name__ == '__main__':
    reader = InputReader()
    n = 180000
    isPrime = [True]*n
    prime = []
    for i in range(2 , n):
        if  isPrime[i]:
            prime.append(i)
            for j in range(i , n , i):
                isPrime[j] = False
    k = reader.nextInt()
    for i in range(0 , k):
        print(prime[reader.nextInt()-1])


1021. Sacrament of the Sum

import queue

class InputReader():
    def nextInt(self):
        return  int(input().strip())

    def nextInts(self):
        ints = []
        str = input().strip().split()
        for s in str:
            if (s is None) or (len(s) == 0):
                continue
            ints.append(int(s))
        return ints

    def nextFloats(self):
        floats = []
        str = input().strip().split()
        for s in str:
            if (s is None) or (len(s) == 0):
                continue
            floats.append(float(s))
        return floats

class Task():

    def solve(self):
        reader = InputReader()
        n = reader.nextInt()
        a = []
        b = []
        for i in range(0 , n):
            a.append(reader.nextInt())
        m = reader.nextInt()
        for i in range(0 , m):
            b.append(reader.nextInt())
        i = j = 0
        while i < n and j < m :
            if a[i] + b[j] == 10000:
                return "YES"
            elif a[i] + b[j] > 10000:
                j += 1
            else:
                i += 1
        return "NO"

if __name__ == '__main__':
   task = Task()
   print(task.solve())

1023. Buttons

if __name__ == '__main__':
    reader = InputReader()
    n = reader.nextInt()
    res = n - 1
    for i in range(3 , int(math.sqrt(n+0.5))+1) :
        if n % i == 0 :
            res = min(res , i-1)
            break
    if (n % 2 == 0) and (int(n/2) - 1 >= 2) :
        res = min(res , int(n/2) - 1)
    print(res)

1197. Lonesome Knight

if __name__ == '__main__':
    reader = InputReader()
    dir = [[-1,2],[-1,-2],[1,2],[1,-2],[2,-1],[2,1],[-2,1],[-2,-1]]
    t = reader.nextInt()
    while t > 0:
        t -= 1
        str = input().strip()
        x = ord(str[0]) - ord('a') + 1
        y = ord(str[1]) - ord('0')
        sum = 0
        for d in dir:
            nx = x + d[0]
            ny = y + d[1]
            if (nx in range(1 ,9)) and (ny in range(1 ,9)):
               sum += 1
        print(sum)

1313. Some Words about Sport

if __name__ == '__main__':
    reader = InputReader()
    n = reader.nextInt()
    a = [[]*n]*n
    for i in range(0 , n):
        a[i] = reader.nextInts()

    for i in range (0 , n):
        x = i
        y = 0
        while x >= 0:
            print(a[x][y] , end=" ")
            x -= 1
            y += 1

    for i in range(1, n):
        x = n-1
        y = i
        while y < n:
            print(a[x][y], end=" ")
            x -= 1
            y += 1

1319. Hotel

if __name__ == '__main__':
    reader = InputReader()
    n = reader.nextInt()
    a = [[0]*n for i in range(n)]
    step = 1
    for i in range(n-1 , -1 , -1):
        x = 0
        y = i
        while y < n:
            a[x][y] = step
            step += 1
            x += 1
            y += 1

    for i in range(1, n):
        x = i
        y = 0
        while x < n:
            a[x][y] = step
            step += 1
            x += 1
            y += 1
    
    for i in range(n):
        for j in range(n):
            print(a[i][j] , end=" ")
        print()

1225. Flags

if __name__ == '__main__':
    reader = InputReader()
    dp = [[0]*46 for i in range(46)]
    dp[1][0] = 1
    dp[1][1] = 0
    dp[1][2] = 1
    dp[2][0] = 1
    dp[2][1] = 0
    dp[2][2] = 1
    for i in range(3 , 46):
        dp[i][0] = dp[i-1][2] + dp[i-2][2]
        dp[i][2] = dp[i-1][0] + dp[i-2][0]
    n = reader.nextInt()
    print(dp[n][0] + dp[n][2])

1567. SMS-spam

if __name__ == '__main__':
    reader = InputReader()
    s = reader.nextLine()
    sum = 0
    for i in s:
        if ' ' == i :
            sum += 1
        elif ".,!".find(i) > -1:
            sum += ".,!".find(i) + 1
        else:
            sum += (ord(i) - ord('a')) % 3 + 1
    print(sum)

1581. Teamwork

if __name__ == '__main__':
    reader = InputReader()
    n = reader.nextInt()
    nums = reader.nextInts()
    cnt = 0
    c = -100
    for i in nums:
        if c == i :
            cnt += 1
        else:
            if cnt != 0:
                print(cnt , end=" ")
                print(c , end=" ")
            c = i
            cnt = 1
    if cnt != 0:
        print(cnt, end=" ")
        print(c)

1585. Penguins

if __name__ == '__main__':
    reader = InputReader()
    n = reader.nextInt()
    dic = {}
    for i in range(0 , n):
        s = reader.nextLine()
        if dic.get(s):
            dic[s] = dic[s] + 1
        else:
            dic[s] = 1
    mx = 0
    res = ""
    for k ,v in dic.items():
        if v > mx:
            res = k
            mx = v
    print(res)

1110. Power

def pow(x , y , m):
    s = 1
    while y > 0 :
        if (y&1) > 0:
            s *= x
            s %= m
        x *= x
        x %= m
        y >>= 1
    return s

if __name__ == '__main__':
    reader = InputReader()
    nums = reader.nextInts()
    n = nums[0]
    m = nums[1]
    y = nums[2]
    res = []
    for x in range(0 , m):
        if pow(x , n , m) == y:
            res.append(x)
    if len(res) == 0 :
        print(-1)
    else:
        for i in res:
            print(i , end=" ")

1493. One Step from Happiness

def gao(n):
    s = str(n)
    l = len(s)
    for i in range(6-l):
        s = "0" + s
    sum = 0
    for i in s[0:3]:
        sum += ord(i)
    for i in s[-3:]:
        sum -= ord(i)
    return sum == 0

def judge(x):
    for i in [x-1 ,x ,x+1]:
        if gao(i):
            return  True
    return False

if __name__ == '__main__':
    reader = InputReader()
    n = reader.nextInt()
    if judge(n):
        print("Yes")
    else:
        print("No")

1131. Copying

if __name__ == '__main__':
    reader = InputReader()
    nums = reader.nextInts()
    n = nums[0]
    k = nums[1]
    cnt = 0
    sum = 1
    while sum < n and sum <= k :
        sum *= 2
        cnt += 1
    if sum < n :
        n -= sum
        if n % k == 0:
            cnt += int(n/k)
        else:
            cnt += int(n/k) + 1
    print(cnt)


1545. Hieroglyphs

if __name__ == '__main__':
    reader = InputReader()
    n = reader.nextInt()
    s = [""] * n
    for i in range(n):
        s[i] = reader.nextString()
    c = reader.nextString()[0]
    res = []
    for i in s :
        if i[0] == c:
           res.append(i)
    res.sort()
    for s in res:
        print(s)

1404. Easy to Hack!

def gao(s):
    n = len(s)
    s2 = [0]*n
    s1 = [0]*n
    for dx in [0 ,26]:
        s3 = s[:]
        s2[0] = s3[0] + dx
        s1[0] = s2[0] - 5
        if s1[0] > 25 or s1[0] < 0 :
            continue
        for i in range(1 , n):
            while s3[i] < s3[i-1]:
                s3[i] += 26
            s1[i] = s3[i] - s3[i-1]
        s = ""
        for i in range(n):
            c = chr(ord('a') + s1[i])
            s += c
        can = True
        for i in s :
            if i < 'a' or i > 'z':
                can = False
        if can:
           return s

if __name__ == '__main__':
    reader = InputReader()
    s = reader.nextString()
    n = len(s)
    s3 = [0]*n
    for i in range(n):
        s3[i] = ord(s[i]) - ord('a')
    print(gao(s3))

1139. City Blocks

class InputReader():
    def nextInt(self):
        return  int(input().strip())

    def nextSplitInts(self):
        a = self.nextInts()
        return tuple(a)

    def nextLine(self):
        return input()

    def nextString(self):
        return input().strip()

    def nextInts(self):
        ints = []
        str = input().strip().split()
        for s in str:
            if (s is None) or (len(s) == 0):
                continue
            ints.append(int(s))
        return ints

    def nextFloats(self):
        floats = []
        str = input().strip().split()
        for s in str:
            if (s is None) or (len(s) == 0):
                continue
            floats.append(float(s))
        return floats

if __name__ == '__main__':
    reader = InputReader()
    n , m = reader.nextSplitInts()
    n -= 1
    m -= 1
    if n < m :
        t = m
        m = n
        n = t
    sum = 0
    for i in range(1 , n+1):
        r = i * m
        l = (i-1)*m
        if l % n == 0 or r % n == 0 :
            sum += 1
        elif int(l/n) != int(r/n):
            sum += 2
        else:
            sum += 1
    print(sum)

1120. Sum of Sequential Numbers

if __name__ == '__main__':
    reader = InputReader()
    n = reader.nextInt()
    n *= 2
    m = int(math.sqrt(n+0.5))
    fac = []
    for i in range(1 , m+1):
        if n % i == 0:
            fac.append(i)
            j = int(n/i)
            if j != i :
                fac.append(j)
    fac.sort(reverse=True)
    for p in fac:
        m = int(n/p - (p -1))
        if m > 0 and m % 2 == 0 :
            print(str(int(m/2)) + " " + str(p))
            break




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值