1021 个位数统计
这个题很简单,只需要把每一位的数字取出来,让储存这个数字有几个的数组对应元素+1,最后不等于0的计数数组元素就输出即可。
#include<iostream>
#include<string>
using namespace std;
int main()
{
int num[10]={0};//初始化全为0
char N[1000];
cin>>N;
for(int i=0;N[i]!='\0';i++)
{
num[N[i]-'0']++;//注意这里不要写成减去'\0'
}
for(int i=0;i<10;i++)//从0开始,满足升序
{
if(num[i]!=0)
{
cout<<i<<":"<<num[i]<<endl;
}
}
return 0;
}
习惯了string的话,用string也是可以的~~
#include<iostream>
#include<string>
using namespace std;
int main()
{
int num[10]={0};//初始化全为0
string N;
cin>>N;
for(int i=0;i<N.length();i++)
{
num[N[i]-'0']++;//注意这里不要写成减去'\0'
}
for(int i=0;i<10;i++)//从0开始,满足升序
{
if(num[i]!=0)
{
cout<<i<<":"<<num[i]<<endl;
}
}
return 0;
}
下面这种方法用的int N,模10取出每一位的话,就有一个测试点过不去
请勿模仿!!!!!!!!
#include<iostream>
using namespace std;
int main()
{
int num[1000]={0};//初始化全为0
int N;
cin>>N;
if(N==0)
{
cout<<"0:1"<<endl;
return 0;
}
while(N!=0)
{
num[N%10]++;
N=N/10;
}
for(int i=0;i<1000;i++)
{
if(num[i]!=0)
{
cout<<i<<":"<<num[i]<<endl;
}
}
return 0;
}
阿巴阿巴阿巴阿巴。我猜可能是题目说的N小于等于1000位,对于int来说可能有点承受不住这么大的数········