pat 乙级 1021 个位数统计(C++)
生活随笔
收集整理的這篇文章主要介紹了
pat 乙级 1021 个位数统计(C++)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
給定一個 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
分析
- 輸入為不超過1000位的整數,所以輸入采用字符串或者字符數組。
- 字符的種類是固定的,即0~9的字符形式
- 將輸入的字符串分割為單獨的字符,然后再和固定的字符對比,累計每個字符的數量
- 按照題給格式輸出
AC代碼
#include<iostream> #include<cstring> #include<string> using namespace std; int main() {int i,j;char a[10]={'0','1','2','3','4','5','6','7','8','9'};int count[10]={0,0,0,0,0,0,0,0,0,0};string s;cin>>s;int res_len=s.length()+1;char result[res_len];strcpy(result, s.c_str());for(i=0;i<res_len;i++)for(j=0;j<10;j++){if(a[j]==result[i]){count[j]++;}}for(i=0;i<10;i++){if(count[i]!=0){cout<<a[i]<<":"<<count[i]<<endl;}}return 0; }總結
后面發現,使用getchar方法更為簡單。代碼如下
優化代碼
#include<iostream> #include<cstring> #include<string> using namespace std; int main() {int i,j;char c;char a[10]={'0','1','2','3','4','5','6','7','8','9'};int count[10]={0,0,0,0,0,0,0,0,0,0};while((c=getchar())!='\n') {for(i=0;i<10;i++){if(c==a[i])count[i]++;}}for(i=0;i<10;i++){if(count[i]!=0){cout<<a[i]<<":"<<count[i]<<endl;}}return 0; }更多題解
pat 乙級 題解匯總(持續更新)(C++)
總結
以上是生活随笔為你收集整理的pat 乙级 1021 个位数统计(C++)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吸引人的租房宣传文案30句
- 下一篇: 路由器为什么突然不能用了路由器如何知道不