1. 程式人生 > >pat 1021 乙級

pat 1021 乙級

1021 個位數統計 (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

下面放下轉載的程式碼

#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;
 } 

也不是說不能排序。。。。。現階段我還不會排。。哈哈哈,先把自己垃圾程式碼放這裡,等以後某天厲害了再來吧