POJ 1002 487-3279(数字hash)
2015-08-23 13:38
489 查看
Description
给你一个字符串,将其转化成一个电话号码XXX-XXXX的形式,除Q,Z外每个大写字母都有其对应的数字:
A,B,C-2
D,E,F-3
G,H,I-4
J,K,L-5
M,N,O-6
P,R,S-7
T,U,V-8
W,X,Y-9
找出多组号码中是否有相同的号码
Input
数据组数n(n<=100000),每组一个字符串
Output
如果有重复的号码,以XXX-XXXX输出并输出其出现次数,如果没有重复号码则输出No duplicates.
Sample Input
12
4873279
ITS-EASY
888-4567
3-10-10-10
888-GLOP
TUT-GLOP
967-11-11
310-GINO
F101010
888-1200
-4-8-7-3-2-7-9-
487-3279
Sample Output
310-1010 2
487-3279 4
888-4567 3
Solution
计算每个号码的hash值,排序,比较有无相同的即可
Code
给你一个字符串,将其转化成一个电话号码XXX-XXXX的形式,除Q,Z外每个大写字母都有其对应的数字:
A,B,C-2
D,E,F-3
G,H,I-4
J,K,L-5
M,N,O-6
P,R,S-7
T,U,V-8
W,X,Y-9
找出多组号码中是否有相同的号码
Input
数据组数n(n<=100000),每组一个字符串
Output
如果有重复的号码,以XXX-XXXX输出并输出其出现次数,如果没有重复号码则输出No duplicates.
Sample Input
12
4873279
ITS-EASY
888-4567
3-10-10-10
888-GLOP
TUT-GLOP
967-11-11
310-GINO
F101010
888-1200
-4-8-7-3-2-7-9-
487-3279
Sample Output
310-1010 2
487-3279 4
888-4567 3
Solution
计算每个号码的hash值,排序,比较有无相同的即可
Code
#include<cstdio> #include<algorithm> using namespace std; char s[31]; int Hash()//将字符串转化为hash值 { int sum=0; for(int i=0,k=0;k<7;i++) { if(s[i]>='0'&&s[i]<='9')//若是数字则直接计算 { sum*=10; k++; sum+=(s[i]-'0'); } else if(s[i]>='A'&&s[i]<'Z')//若是字母则转化为数字后计算 { sum*=10; k++; sum+=((s[i]-'A'-(s[i]>'Q'))/3+2);//跳过Q } } return sum; } int main() { int n; scanf("%d",&n); int data[100005]; getchar(); for(int tmp=0;tmp<n;tmp++) { gets(s); data[tmp]=Hash(); } sort(data,data+n); bool p=false;//标志变量,判断是否有重复的号码 n--; for(int i=0,num=1;i<n;i+=num=1) { while(data[i]==data[i+1]) { num++; i++; } if(num>1) { printf("%03d-%04d %d\n",data[i]/10000,data[i]%10000,num); p=true; } } if(!p)printf("No duplicates.\n"); return 0; }
相关文章推荐
- asp 支付宝 企业版 接口 支持网银接口 ,网银直接支付
- iOS核心动画之CABasicAnimation
- bcp sqlcmd bulkinsert在unicode问题,Unexpected EOF encountered in BCP data-file
- expr 命令
- 编写高质量代码改善C#程序的157个建议——建议126:用名词和名词组给类型命名
- ubuntu14.04 安装gtx960闭源驱动
- elasticsearch的研究与使用(三)Aggregations
- POJ 1000 && HDU 1000 A+B Problem(水~)
- sql优化
- junit-test
- jquery 操作select项目
- matlab下使用sqlite数据库
- 汇编指令 MOV、MOVSB、MOVSW、
- HDU 2612 Find a way (BFS)
- HIbernate关系映射--单向多对一@ManyToOne
- Linux基础--复制操作分析
- 使用GoLang实现文件远程传输
- 递归和递推求阶乘
- Linux配置apache等系列
- 开放平台(接口)开发-1-天气API接口大全