給定一批整數,分析每個整數的每一位數字,求出現次數最多的個位數字。例如給定3個整數1234、2345、3456,其中出現最多次數的數字是3和4,均出現了3次。
輸入格式:
輸入給出一行字符。
輸入在第1行中給出正整數N(≤1000),在第二行中給出N個不超過整型範圍的非負整數,數字間以空格分隔。
輸出格式:
在一行中按格式“M: n1 n2 …”輸出,其中M是最大次數,n1、n2、……爲出現次數最多的個位數字,按從小到大的順序排列。數字間以空格分隔,但末尾不得有多餘空格。
輸入樣例:
3
1234 2345 3456
輸出樣例:
3: 3 4
##思維導圖
代碼如下:
#include<stdio.h>
int main(){
int n,j,k,i,t,x;
int b[10];//記錄數字頻率
for(i=0;i<10;i++){
b[i]=0;
}//b【10】初始化
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){//input
scanf("%d",&a[i]);
}
//得到數字的頻率
for(j=0;j<n;j++){//對於每個整數
while(1){//對單一整數的處理
if(a[j]/10){
t=a[j]%10;
b[t]++;
a[j]/=10;
}
else {
b[a[j]]++;
break;
}
}
}
int max=0;
for(i=0;i<10;i++){//得到頻率最大的數字
if(b[i]>max){
max=b[i];
}
} printf("%d:",max);
for(i=0;i<10;i++){
if(b[i]==max)printf(" %d",i);
}
return 0;
}
在思路清晰的狀況下,此題不難。