[每日CPE] UVA10931、10789

楼主: kerycheng (kk)   2022-12-17 20:01:34
想说论文已经差不多了,就来练一下程式好了
UVA10931
测资会一直丢数字给你,要你把这些数字转成二进制并统计"1"的次数
当input为"0"的时候结束程式
output格式为"The parity of B is P (mod 2)."。B是数字的二进制;P是1所出现的次数
程式:
while True:
number = int(input())
if number == 0: # 当input = 0 时结束程式
break
binary_number = format(number, "b") # 将input转成二进制
count = 0 # 计算次数
for i in binary_number:
if i == '1': # 当1出现时count++
count += 1
print('The parity of {} is {} (mod 2).'.format(binary_number, count))
UVA10789
测资第一行为要执行的行数,之后才是要处理的字串
要你统计这些字串里字符所出现的次数,当出现次数为质数时印出来,若没有质数时则印
出empty
程式:
import math
def is_prime(number): # 判断是否为质数
if number < 2:
return False
for i in range(2, int(math.sqrt(number)) + 1):
if number % i == 0:
return False
return True
def count_freq(string): # 将字串存成字典并统计出现次数
frequency = {}
for i in string:
if i in frequency:
frequency[i] += 1
else:
frequency[i] = 1
return frequency
times = int(input()) # 读行数
for i in range(times):
an = input() # 读字串
freq = count_freq(an) # 把字串存成字典
prime = [] # 把出现次数是质数的字符存到阵列里
for j, k in freq.items():
if is_prime(k):
prime.append(j)
prime.sort() # 按照大小排顺序
if len(prime) > 0:
print('Case {}: {}'.format(i + 1, "".join(prime)))
else: # 当阵列为空打印empty
print('Case {}: empty'.format(i + 1))
原本这题写完超丑,问了下AI发现它写的比我漂亮很多就学了一下它的写法
作者: ririoshi (角落住民)   2022-12-17 20:03:00
大师
作者: wu10200512 (廷廷)   2022-12-17 20:03:00
cpe是啥

Links booklink

Contact Us: admin [ a t ] ucptt.com