[每日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