L1-003 個位數統計 (15 分)
文章提供者:海南師范大學 ---- 人工智能教育協會 ---- 王垚儒
(一)題目要求
給定一個 k 位整數 N=d?k?1??10?k?1??+?+d?1??10?1??+d?0?? (0≤d?i??≤9, i=0,?,k?1, d?k?1??>0),請撰寫程式統計每種不同的個位數字出現的次數,例如:給定 N=100311,則有 2 個 0,3 個 1,和 1 個 3,
輸入格式:
每個輸入包含 1 個測驗用例,即一個不超過 1000 位的正整數 N,
輸出格式:
對 N 中每一種不同的個位數字,以 D:M 的格式在一行中輸出該位數字 D 及其在 N 中出現的次數 M,要求按 D 的升序輸出,
輸入樣例:
100311
輸出樣例:
0:2
1:3
3:1
(二)代碼如下
方法一(python):
a = input() #輸入數字,用變數a接受
bits = list(a) #建立串列,利用list()函式將這個數字的每一位分開
counts = {} #建立字典,依題意統計個位數
for i in bits : #遍歷,進行賦值
counts[i] = counts.get(i,0) + 1 #對鍵i出現的頻率進行統計,當鍵i不在bits時,回傳值默認為0; 當鍵i在bits中時,回傳值+1,以此進行累計計數
items = list(counts.items()) #將鍵值轉換為串列
items.sort(reverse = False) #鍵值以輸出樣例為準按照升序方式排列(reverse的默認排序是升序,默認值為False)
for i in items : #按照以上默認的步進值獲得相應匹配的鍵和值
bit, count = i
print("{}:{}".format(bit, count)) #列印輸出結果
方法二(C++):
#include<bits/stdc++.h>
using namespace std;
int main(){
char num[10001];
scanf("%s",&num);
int a[10]={0};
for(int i=0; i<strlen(num); i++){
a[num[i]-48]++;
}
for(int i=0;i<10;i++){
if(a[i]!=0){
printf("%d:%d\n",i,a[i]);
}
}
return 0;
}
誠摯希望有心者指正,渴望簡單的方法,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289431.html
標籤:AI
上一篇:【學習筆記】李宏毅2021春機器學習課程第4.1節:自注意力機制(一)
下一篇:Pytorch入門 - Day5
