PAT basic1016-1020(Python版)

本文提供了四个Python编程挑战题的解决方案,涉及字符串处理、数学运算、数据统计与排序算法等核心概念。通过这些题目,读者可以深入了解Python语言的灵活性及其在解决实际问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python2环境:

1016:

from sys import exit
str = raw_input().split()
sum = 0
if str[0].count(str[1]) != 0:
    sum += int(str[0].count(str[1]) * str[1])

if str[2].count(str[3]) != 0:
    sum += int(str[2].count(str[3]) * str[3])

print sum        
exit(0)


1017:

from sys import exit
str = raw_input().split()
a = str[0]
b = int(str[1])
add = 0
shang = ''

for i in a:
    shang += '%d' % ( (int(i)+add*10) / b )
    add = (int(i)+add*10) % b

shang = shang.lstrip('0')
if shang == '':
    shang = '0' 
print shang, add        
exit(0)


1018:

from sys import exit

def output_popular( dict ):
    popular = ''
    num = 0
    for i in dict.keys():
        if popular == '' or dict[i] > num or (dict[i] == num and i < popular):
            popular = i
            num = dict[i]

    return popular

dict_pri_jia = {'B C':0, 'B B':1, 'B J':2, 'C B':2, 'C C':1, 'C J':0, 'J B':0, 'J J':1, 'J C':2}        
jia = [0, 0, 0, {'B':0, 'C':0, 'J':0}]
yi = [0, 0, 0, {'B':0, 'C':0, 'J':0}]

num = input()
for i in range(num):
    str = raw_input()
    
    jia[dict_pri_jia[str]] += 1
    yi[2-dict_pri_jia[str]] += 1
    
    if dict_pri_jia[str] == 0:
        jia[3][str[0]] += 1

    if dict_pri_jia[str] == 2:
        yi[3][str[2]] += 1

print jia[0], jia[1], jia[2]
print yi[0], yi[1], yi[2]
print output_popular(jia[3]), output_popular(yi[3])

exit(0)

也有个case超时,数据量太大就超时。。

1019:

from sys import exit

str = raw_input()
str = (4-len(str))*'0' + str
strList = sorted(str)

while strList.count(str[0]) != 4:
    strList = sorted(str)
    small = ''
    big = ''
    res = ''
    for i in range(4):
        small += strList[i]

    strList.reverse()
    for i in range(4):
        big += strList[i]

    str = '%04d' % (int(big)-int(small))
    print '%s - %s = %s' % (big, small, str)
    
    if str == '6174':
        break

if strList.count(str[0]) == 4:
    print '%s - %s = 0000' % (str, str)

exit(0)


1020:

from sys import exit

str = raw_input().split()
mkNum = int(str[0])        
total = int(str[1])
para = []
para.append(raw_input().split())
para.append(raw_input().split())        

for i in range(mkNum):
    para[0][i] = float(para[0][i])
    para[1][i] = float(para[1][i])

dict = {}
for i in range(mkNum):
    if (float(para[1][i]) / para[0][i]) in dict.keys():
        dict[float(para[1][i]) / para[0][i]][0] += para[1][i]
        dict[float(para[1][i]) / para[0][i]][1] += para[0][i]
    else:
        dict[float(para[1][i]) / para[0][i]] = [para[1][i], para[0][i]]

mkeys = dict.keys()
mkeys.sort()
mkeys.reverse()            
value = 0.0

for i in mkeys:
    if total > dict[i][1]:
        value += dict[i][0]
        total -= dict[i][1]
    else:
        value += float(dict[i][0]) / dict[i][1] * total
        break

print '%.2f' % value

exit(0)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值