pat 1021 乙級
阿新 • • 發佈:2018-11-22
1021 個位數統計 (15 分)
給定一個 k 位整數 N=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1>0),請編寫程式統計每種不同的個位數字出現的次數。例如:給定 N=100311,則有 2 個 0,3 個 1,和 1 個 3。
輸入格式:
每個輸入包含 1 個測試用例,即一個不超過 1000 位的正整數 N。
輸出格式:
對 N 中每一種不同的個位數字,以 D:M
的格式在一行中輸出該位數字 D
M
。要求按 D
的升序輸出。
輸入樣例:
100311
輸出樣例:
0:2
1:3
3:1
下面放下轉載的程式碼
#include <stdio.h> #include <iostream> #include <cstdlib> #include <cmath> #include <cctype> #include <string> #include <cstring> #include <algorithm> #include <ctime> using namespace std; char num[1000]; int c[10]={0}; int main() { cin>>num; int len=strlen(num); for (int i = 0; i < len; ++i) { if (num[i]=='0') { c[0]++; } if (num[i]=='1') { c[1]++; } if (num[i]=='2') { c[2]++; } if (num[i]=='3') { c[3]++; } if (num[i]=='4') { c[4]++; } if (num[i]=='5') { c[5]++; } if (num[i]=='6') { c[6]++; }if (num[i]=='7') { c[7]++; } if (num[i]=='8') { c[8]++; } if (num[i]=='9') { c[9]++; } } for (int i=0;i<10;i++) { if (c[i]!=0) { cout<<i<<":"<<c[i]<<endl; } } return 0; }
這個程式碼好簡單但是是我認為是最好的。。。
然後放下我自己寫的,想用count函式計算數字出現的次數,但是由於出現了重複值,而且沒法排序啊。
#include<iostream> #include<math.h> #include<vector> #include<algorithm> using namespace std; int main() { vector<int> s; string n; cin>>n; int k=n.length(); //把這個數先處理一下 int yi,er,sa,si,wu,liu,qi,ba,jiu,ling; //100 for(int i=0;i<k;i++) { //1003311 int number=count(n.begin(),n.end(),n[i]); s.push_back(number); () //cout<<n[i]<<":"<<number<<endl; } return 0; }
也不是說不能排序。。。。。現階段我還不會排。。哈哈哈,先把自己垃圾程式碼放這裡,等以後某天厲害了再來吧