[2007年NOIP提高组] 统计数字
[2007年NOIP提高组] 统计数字
思路:将输入的数字将输入的统计数字存入数组,根据题意由小到大排序(我用的sort()函数),这样重复的数就挨在一起。排序后开一个计数器,记录重复数的个数,输出。
代码如下:
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
int num,a[200005];
int main()
{
cin>>num;//要输入的数字个数
for(int i=1;i<=num;i++)
cin>>a[i];//输入数字
sort(a+1,a+1+num);//从小到大排序
int n=1;//计数
for(int i=1;i<num;i++)
{
if(a[i+1]!=a[i])
{
cout<<a[i]<<" "<<n<<endl;;
n=0;
}
n++;
}
if(a[num]!=a[num-1])//单独处理最后一个
cout<<a[num]<<" 1"<<endl;
else
cout<<a[num]<<" "<<n<<endl;
return 0;
}