PAT basic1011-1015(Python版)

来源:互联网 发布:移动数据漫游什么意思 编辑:程序博客网 时间:2024/06/15 21:24

Python2环境

1011:

from sys import exitnum = input()for i in range(num):    str = raw_input().split()    numList = [int(str[j]) for j in range(len(str))]    if numList[0] + numList[1] > numList[2]:        print 'Case #%d: true' % (i+1)    else:        print 'Case #%d: false' % (i+1)exit(0)


1012:

from sys import exitstr = raw_input().split()numList = [int(str[j]) for j in range(len(str))]numList = numList[1:]sum = 0for i in numList:    if i % 5 == 0 and i % 2 == 0:        sum += iif sum == 0:    print 'N',else:    print sum,sum = 0count = 0flag = 1for i in numList:    if i % 5 == 1:        sum += i * flag        flag *= -1        count += 1if count == 0:    print 'N',else:    print sum,sum = 0for i in numList:    if i % 5 == 2:        sum += 1if sum == 0:    print 'N',else:    print sum,sum = 0.0count = 0for i in numList:    if i % 5 == 3:        count += 1;        sum += float(i)if count == 0:    print 'N',else:    print '%.1f' % (sum / float(count)),max = 0for i in numList:    if i % 5 == 4:        if i > max:            max = iif max == 0:    print 'N'else:    print maxexit(0)


1013:

from sys import exitfrom math import sqrtdef isPrime( num ):    if num == 1:        return 1    if num == 2 or num == 3:        return 0    for i in range(2, int(sqrt(num))+1):        if num % i == 0:            return 1    return 0str = raw_input().split()start = int(str[0])end = int(str[1])        count = 0i = 2flag = 0while True:    if isPrime(i) == 0:        count += 1        if count >= start :            flag += 1            if flag % 10 != 0:                print i,            else:                print i        if count >= end:            break    i += 1exit(0)
又是素数,有case超时。

1014:

from sys import exitdict_week = {'A':'MON', 'B':'TUE', 'C':'WED', 'D':'THU', \            'E':'FRI', 'F':'SAT', 'G':'SUN'}dict_hour = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5,'6':6, \             '7':7, '8':8, '9':9, 'A':10, 'B':11, 'C':12, \             'D':13, 'E':14, 'F':15, 'G':16, 'H':17, 'I':18, \             'J':19, 'K':20, 'L':21, 'M':22, 'N':23}str = []for i in range(4):    str.append(raw_input())res = []count = 0for i in range(len(str[0])):    if count == 0 and str[0][i] == str[1][i] and str[0][i] in dict_week.keys():        res.append(str[0][i])        count += 1        continue                          if count == 1 and str[0][i] == str[1][i] and str[0][i] in dict_hour.keys():        res.append(str[0][i])        breakfor i in range(len(str[2])):    if str[2][i] == str[3][i] and str[2][i].isalpha():        res.append(i)        breakprint '%s %02d:%02d' % (dict_week[res[0]], dict_hour[res[1]], res[2])    exit(0)


1015:

from sys import exitdef myCmp( a, b ):    valuea = 2 * int(a[1]) + int(a[2])    valueb = 2 * int(b[1]) + int(b[2])        if valuea > valueb:        return -1    elif valuea == valueb:        if a[0] < b[0]:            return -1        else:            return 1    else:        return 1rawIn = raw_input().split()num = int(rawIn[0])jige = int(rawIn[1])prio = int(rawIn[2])firstClass = []secondClass = []thirdClass = []forthClass = []for i in range(num):    rawIn = raw_input().split()        if int(rawIn[1]) >= prio and int(rawIn[2]) >= prio:        firstClass.append(rawIn)    elif int(rawIn[1]) >= prio and jige <= int(rawIn[2]) <= prio:        secondClass.append(rawIn)    elif int(rawIn[1]) >= jige and int(rawIn[2]) >= jige and int(rawIn[1]) >= int(rawIn[2]):                thirdClass.append(rawIn)    elif int(rawIn[1]) >= jige and int(rawIn[2]) >= jige:        forthClass.append(rawIn)    else:        passfirstClass.sort(cmp=myCmp)secondClass.sort(cmp=myCmp)thirdClass.sort(cmp=myCmp)forthClass.sort(cmp=myCmp)        print len(firstClass) + len(secondClass) + len(thirdClass) + len(forthClass)for i in [firstClass, secondClass, thirdClass, forthClass]:    for j in i:        print j[0], j[1], j[2]exit(0)

有3个case超时,也是醉了。。总体来说,Python做出解决方案的效率很高,但时间效率偏低,内存效率也偏低。还是很喜欢的。

0 0