团体程序设计天梯赛-练习集 L1-003 个位数统计
2017-03-23 13:28
246 查看
团体程序设计天梯赛-练习集 L1-003个位数统计
原题如下:
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越
给定一个k位整数N = dk-1*10k-1 + ... + d1*101 + 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及其在N中出现的次数M。要求按D的升序输出。
输入样例:
输出样例:
笔者第一次做该题时用的比较粗暴的方法,无非进行遍历,代码如下:
写完后灵机一动,想到了set容器的唯一性,以及vector容器的count()计数功能,故改进代码如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
char temp[1005];
set<int>numset;
vector<int>numvec;
gets(temp);
for(int i=0; temp[i]!='\0'; i++)
{
numset.insert(temp[i]-48);
numvec.push_back(temp[i]-48);
}
set<int>::iterator it;
for(it=numset.begin(); it!=numset.end(); it++)
cout<<*it<<":"<<count(numvec.begin(),numvec.end(),*it)<<endl;
return 0;
}
提交结果就不截图了,上述方法都能得满分
原题如下:
L1-003. 个位数统计
时间限制400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越
给定一个k位整数N = dk-1*10k-1 + ... + d1*101 + 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及其在N中出现的次数M。要求按D的升序输出。
输入样例:
100311
输出样例:
0:2 1:3 3:1
笔者第一次做该题时用的比较粗暴的方法,无非进行遍历,代码如下:
#include <stdio.h> int main() { int a[10]; char n[10000]; int i,j=0; gets(n); for(i=0; i<10; i++) a[i]=0; i=0; while(n[i]!='\0') { if(n[i]=='0') a[0]++; else if(n[i]=='1') a[1]++; else if(n[i]=='2') a[2]++; else if(n[i]=='3') a[3]++; else if(n[i]=='4') a[4]++; else if(n[i]=='5') a[5]++; else if(n[i]=='6') a[6]++; else if(n[i]=='7') a[7]++; else if(n[i]=='8') a[8]++; else if(n[i]=='9') a[9]++; i++; } for(i=0; i<10; i++) { if(a[i]>0) j++; } for(i=0; i<10; i++) { if(a[i]>0) { printf("%d:%d\n",i,a[i]); j--; } if(j==1) break; } for(i=i+1; i<10; i++) { if(a[i]>0) { printf("%d:%d",i,a[i]); break; } } return 0; }
写完后灵机一动,想到了set容器的唯一性,以及vector容器的count()计数功能,故改进代码如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
char temp[1005];
set<int>numset;
vector<int>numvec;
gets(temp);
for(int i=0; temp[i]!='\0'; i++)
{
numset.insert(temp[i]-48);
numvec.push_back(temp[i]-48);
}
set<int>::iterator it;
for(it=numset.begin(); it!=numset.end(); it++)
cout<<*it<<":"<<count(numvec.begin(),numvec.end(),*it)<<endl;
return 0;
}
提交结果就不截图了,上述方法都能得满分
相关文章推荐
- 团体程序设计天梯赛-练习集 L1-003. 个位数统计 JAVA
- 团体程序设计天梯赛-练习集L1-003. 个位数统计
- 团体程序设计天梯赛-练习集L1-003. 个位数统计
- PAT 团体程序设计天梯赛-练习集 L1-003. 个位数统计
- L1-003. 个位数统计-PAT团体程序设计天梯赛GPLT
- 团体程序设计天梯赛 L1-003. 个位数统计
- ACM天梯赛练习L1-003. 个位数统计
- 团体程序设计天梯赛-练习集 L1-005 考试座位号
- 团体程序设计天梯赛-练习集 L3-003. 社交集群(并查集)
- 团体程序设计天梯赛-练习集 L1-048. 矩阵A乘以B
- PAT 团体程序设计天梯赛-练习集 L1-018. 大笨钟
- 团体程序设计天梯赛-练习集L1-001. Hello World
- 团体程序设计天梯赛-练习集L1-009. *N个数求和
- 团体程序设计天梯赛-练习集L1-017. 到底有多二
- 团体程序设计天梯赛-练习集L1-010. 比较大小
- 团体程序设计天梯赛-练习集L1-017. 到底有多二
- L1-031. 到底是不是太胖了 团体程序设计天梯赛-练习集
- 团体程序设计天梯赛-练习集L2-003. 月饼
- PAT 团体程序设计天梯赛-练习集 L1-019. 谁先倒
- 团体程序设计天梯赛-练习集L1-002. 打印沙漏