统计电话号码

属相(生肖)算器 属相(生肖)算器_V1.2 非常好用,很不错的小软件 立即下载

统计电话号码

企业喜欢用容易被记住的电话号码。让电话号码容易被记住的一个办法是将它写成一个容易记住的单词或者短语。例如,你需要给Waterloo大学打电话时,可以拨打TUT-GLOP。有时,只将电话号码中部分数字拼写成单词。当你晚上回到酒店,可以通过拨打310-GINO来向Gino’s订一份pizza。让电话号码容易被记住的另一个办法是以一种好记的方式对号码的数字进行分组。通过拨打Pizza Hut的“三个十”号码3-10-10-10,你可以从他们那里订pizza。
电话号码的标准格式是七位十进制数,并在第三、第四位数字之间有一个连接符。电话拨号盘提供了从字母到数字的映射,映射关系如下: 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 Q和Z没有映射到任何数字,连字符不需要拨号,可以任意添加和删除。 TUT-GLOP的标准格式是888-4567,310-GINO的标准格式是310-4466,3-10-10-10的标准格式是310-1010。 如果两个号码有相同的标准格式,那么他们就是等同的(相同的拨号)
你的公司正在为本地的公司编写一个电话号码薄。作为质量控制的一部分,你想要检查是否有两个和多个公司拥有相同的电话号码。
输入:输入的格式是,第一行是一个正整数,指定电话号码薄中号码的数量(最多100000)。余下的每行是一个电话号码。每个电话号码由数字,大写字母(除了Q和Z)以及连接符组成
输出:对于每个出现重复的号码产生一行输出,输出是号码的标准格式紧跟一个空格然后是它的重复次数。如果存在多个重复的号码按照号码的字典升序输出。如果没有重复的号码,输出一行:
No duplicates.

代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 char map[]="22233344455566677778889999";  //Q和Z先正常考虑,如若不考虑,对应关系就会受到影响。
 char str[80],telNumbers[100000][9];
 int compare(const void *elem1,const void *elem2)  //const修饰指向的对象,A可变,A指向的对象不可变
 	 //为函数模板sort定义数组元素的比较函数 
 {
 	 return(strcmp((char*)elem1,(char*)elem2)); 
 };
 void standardizeTel(int n)//是一个函数,使标准化,规格化 。简洁易读。
 {
 	int j,k; 	
 	j=k=-1;//... 
 	while(k<8)
 	{
 		j++;
		 if(str[j]=='-')	
 			continue;
 		k++;
 		if(k==3)
 		{
 			telNumbers[n][k]='-';
 			k++;
		 }
		 if(str[j]>='A'&&str[j]<='Z') 
		 {
		 	telNumbers[n][k]=map[str[j]-'A'];
		 	continue;
		 };
		 telNumbers[n][k]=str[j];	
	} 
	telNumbers[n][k]='\0';
	return;
 }
 int main()
 {
 	int n,j,i;
 	bool noduplicate;
 	
 	scanf("%d",&n);
 	for(i=0;i<n;i++)	//输入电话号码,储存到数组telNumbers中
 	{
		 scanf("%s",str);
		 standardizeTel(i);//将str中的电话号码转化成标准形式 ,储存在telNumbers中第i行 
	 }
	 qsort(telNumbers,n,9,compare);//对输入的电话号码进行排序
	  noduplicate=true;//对布尔变量赋值true 
	  i=0;
	  while(i<n)//搜索重复的电话号码,并进行输出
	  {	 
	   j=i;//j用来记录原来的位置 
	  i++;
	  while(i<n&&strcmp(telNumbers[i],telNumbers[j])==0) i++;//相邻的比较,相同则i加一,此时是已经排序了的
	  if(i-j>1)  //大于1说明存在相同的两行 
	  {
	  	printf("%s%d\n",telNumbers[j],i-j);
		noduplicate=false;
	   } 	
	   } 
	 if(noduplicate) printf("No duplicates.\n");
}

分析
(1)判断输入的电话号码中是否有重复号码:将各种电话号码表示转换成标准表示:一个长度为 8 的字符串,前三个字符是数字、第 4 个字符是’-’、后四个字符是数字。
(2)用一个二维数组 telNumbers[100000][9]来存储全部的电话号码,每一行存储一个电话号码
的标准表示。每读入一个电话号码,首先将其转换成标准表示,然后存储到二维数组
telNumbers 中。
(3) telNumbers 为一个一维数组,其中每个元素是一个字符串,用C/C++提供的函数模板sort对进行排序。用字符串比较函数strcmp比较 telNumbers 中相邻的电话号码,判断是否有重复的电话号码、并计算重复的次数。
总结
(1)首先这道题题目较长,需要仔细分析找出关键点。其次,问题涉及的字符较多,形式较多,需要考虑如何转换更加方便清晰。
(2)解决这个问题,所要运用的函数较多。由于初学,需要了解的也多。
sort() 定义在在头文件< algorithm>中。sort函数是标准模板库的函数,已知开始和结束的地址即可进行排序,可以用于比较任何容器(必须满足随机迭代器),任何元素,任何条件,执行速度一般比qsort要快,相当于它的升级版。另外,sort()是类属函数,可以用于比较任何容器,任何元素,任何条件。
int compare(const void * elem1,const void * elem2) 是qsort的比较函数。
strcmp() 也是比较函数。
**standardize()**使程序结构简洁清晰。

POJ 1002 487-3279 telephone numbers 487-3279 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 102808 Accepted: 17241 Description Businesses like to have memorable telephone numbers. One way to make a telephone number memorable is to have it spell a memorable word or phrase. For example, you can call the University of Waterloo by dialing the memorable TUT-GLOP. Sometimes only part of the number is used to spell a word. When you get back to your hotel tonight you can order a pizza from Gino's by dialing 310-GINO. Another way to make a telephone number memorable is to group the digits in a memorable way. You could order your pizza from Pizza Hut by calling their ``three tens'' number 3-10-10-10. The standard form of a telephone number is seven decimal digits with a hyphen between the third and fourth digits (e.g. 888-1200). The keypad of a phone supplies the mapping of letters to numbers, as follows: A, B, and C map to 2 D, E, and F map to 3 G, H, and I map to 4 J, K, and L map to 5 M, N, and O map to 6 P, R, and S map to 7 T, U, and V map to 8 W, X, and Y map to 9 There is no mapping for Q or Z. Hyphens are not dialed, and can be added and removed as necessary. The standard form of TUT-GLOP is 888-4567, the standard form of 310-GINO is 310-4466, and the standard form of 3-10-10-10 is 310-1010. Two telephone numbers are equivalent if they have the same standard form. (They dial the same number.) Your company is compiling a directory of telephone numbers from local businesses. As part of the quality control process you want to check that no two (or more) businesses in the directory have the same telephone number. Input The input will consist of one case. The first line of the input specifies the number of telephone numbers in the directory (up to 100,000) as a positive integer alone on the line. The remaining lines list the telephone numbers in the directory, with each number alone on a line. Each telephone number consists of a string composed of decimal digits, uppercase letters (excluding Q and Z) and hyphens. Exactly seven of the characters in the string will be digits or letters. Output Generate a line of output for each telephone number that appears more than once in any form. The line should give the telephone number in standard form, followed by a space, followed by the number of times the telephone number appears in the directory. Arrange the output lines by telephone number in ascending lexicographical order. If there are no duplicates in the input print the line: 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 Source East Central North America 1999 487-3279 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 102808 Accepted: 17241 Description 企业喜欢用容易被记住的电话号码。让电话号码容易被记住的一个办法是将它写成一个容易记住的单词或者短语。例如,你需要给滑铁卢大学打电话时,可以拨打TUT-GLOP。有时,只将电话号码中部分数字拼写成单词。当你晚上回到酒店,可以通过拨打310-GINO来向Gino's订一份pizza。让电话号码容易被记住的另一个办法是以一种好记的方式对号码的数字进行分组。通过拨打必胜客的“三个十”号码3-10-10-10,你可以从他们那里订pizza。 电话号码的标准格式是七位十进制数,并在第三、第四位数字之间有一个连接符。电话拨号盘提供了从字母到数字的映射,映射关系如下: 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 Q和Z没有映射到任何数字,连字符不需要拨号,可以任意添加和删除。 TUT-GLOP的标准格式是888-4567,310-GINO的标准格式是310-4466,3-10-10-10的标准格式是310-1010。 如果两个号码有相同的标准格式,那么他们就是等同的(相同的拨号) 你的公司正在为本地的公司编写一个电话号码薄。作为质量控制的一部分,你想要检查是否有两个和多个公司拥有相同的电话号码。 Input 输入的格式是,第一行是一个正整数,指定电话号码薄中号码的数量(最多100000)。余下的每行是一个电话号码。每个电话号码由数字,大写字母(除了Q和Z)以及连接符组成。每个电话号码中只会刚好有7个数字或者字母。 Output 对于每个出现重复的号码产生一行输出,输出是号码的标准格式紧跟一个空格然后是它的重复次数。如果存在多个重复的号码,则按照号码的字典升序输出。如果输入数据中没有重复的号码,输出一行: 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 Source East Central North America 1999 Translator 北京大学程序设计实习2007 立即下载

相关推荐

手机号码对应省市地区编码

360569手机号 省 市 地区码

统计指定数字和

输入一个数字的字符串和一个数字字符(1到9),统计这个数字在字符串中出现的次数,并累加。例如有个字符串是1234321,查找2这个数字,在字符串中出现了2次,所以累计和就是2+2=4 输入格式: 输入2行。第1行是字符串,第2行是要查找的数字。 输出格式: 指定数字出现的累加和 输入样例: 1234321 2 输出样例: 4 n=str(input()) p=str(input()) prin...

芝士味椒盐的博客 2295

用AI助手Cursor轻松自动生成流程图

通过 Cursor + Mermaid,我们可以快速、准确地自动生成流程图,上面演示的例子部分流程图可能比较丑,我们可以通过流程图软件导入Mermaid代码,然后手动进行微调就可以了,如果你对美观要求不是特别多,可以直接用,这将极大地提升代码可视化和架构设计的效率。

呱牛 Just do IT 1938

电话号码的个数

题目描述: 一个电话号码有11位数字,且必须以8为开头(可能跟平常号码的不一样ヽ(*。&gt;Д&lt;)o゜)像8********** (*为一个0~9的数字) 是一个电话号码  现在给你一个n,代表数字的个数(11&lt;=n&lt;=10000),接下来个给你n个数字(n个数字连在一起,你可以把她当做一个长度为n的字符串)你希望使用他们来制作尽可能多的电话号码,每个数字最多使用一次,电话...

BigZong 906

从零上手SKILL脚本:在Virtuoso中实现版图绘制自动化

本文详细介绍了如何使用SKILL脚本在Virtuoso中实现版图绘制自动化,从基础操作到高级技巧全面覆盖。通过抓取操作日志、转换交互式函数为程序式函数,以及核心函数深度解析,帮助读者快速掌握SKILL脚本编程,大幅提升版图设计效率。文章还提供了实际工程应用案例和调试优化技巧,适合从零开始的初学者。

weixin_28742653的博客 763

Plant Simulation新手入门:5步搞定生产线物流仿真(附模型库使用技巧)

本文为Plant Simulation新手提供了从零开始构建生产线物流仿真的五步入门指南。通过理念重塑、流程规划、对象连接、参数设置到数据分析的完整流程,帮助用户快速掌握这一强大仿真工具的核心逻辑。文章特别强调了模型库的高效使用技巧,助力工程师在虚拟环境中精准模拟和优化生产系统,提升规划效率。

efc123456的博客 333

电话号码统计程序

一位同学碰到的问题,详细的题目不清楚大概的要点也就是考点如下: 1、要求从txt文件中读取,是对IO的考验; 2、对Int32的理解,要求知道大概的大小; 3、对操作大数字方案的解决 ; 前两者没什么问题,在IO的时候注意编码方式就好,不过因为是电话号码,一般都为数字所以都无所谓。当然这里没有考虑‘#’等特殊字符。 比较难的是第三点,也是比较经典的问题,一般情况下用长整形就...

weixin_34260991的博客 330

YOLOv11 改进 - 注意力机制 | Deformable-LKA 可变形大核注意力:自适应采样网格优化特征捕捉,提升不规则目标感知

本文介绍了可变形大核注意力(D-LKA Attention)及其在YOLOv11中的结合。D-LKA Attention是一种简化的注意力机制,采用大卷积核利用体积上下文信息,通过可变形卷积灵活调整采样网格,适应多样数据模式。它有2D和3D版本,3D版本在跨深度数据理解上表现出色,共同构成了D-LKA Net架构。我们将D-LKA Attention集成进YOLOv11,在模型的检测头部分引入deformable_LKA_Attention模块。实验表明,该方法在分割任务上表现优于现有方法,提升了模型的检测

魔改工程师的博客 1170

PTA刷题之手机号码

7-3 手机号码 我国使用的手机号码为11位,其中各段有不同的编码方向:前3位是网络识别号;第4-7位为地区编码;第8-11位表示用户号码。 本题要求你实现一个程序,自动统计指定地区编码的手机号码的个数。 输入格式: 输入第一行为待查询的地区编码,随后每行都是11位数字组成的手机号码,当读到某一行只有一个英文句点 . 时,输入结束。 输出格式: 首先在第一行中输出手机号码的总个数。然后统计指定地区编码的手机号码有多少个。第二行首先输出第一次出现该地区编码的手机号码是第几个(从 1 开始计数,没有输出0),然

m0_54015435的博客 3581

Arduino I2C for TCA9548A应答扫描程序

Arduino I2C for TCA9548A应答扫描程序

perseverance51博客 1119

Pdu Router(PduR)模块

1. PduR路由基本功能 2. PduR总线网关功能 3. PduR缓存机制 4. 总结

weixin_43759043的博客 3849

PTA 7-40 手机号码

首先在第一行中输出手机号码的总个数。然后统计指定地区编码的手机号码有多少个。第二行首先输出第一次出现该地区编码的手机号码是第几个(从 1 开始计数,没有输出0),然后输出该地区编码手机号码的总个数(没有输出0),其间以一个空格分隔。我国使用的手机号码为11位,其中各段有不同的编码方向:前3位是网络识别号;第8-11位表示用户号码。输入第一行为待查询的地区编码,随后每行都是11位数字组成的手机号码,当读到某一行只有一个英文句点 . 时,输入结束。本题要求你实现一个程序,自动统计指定地区编码的手机号码的个数。

m0_60738889的博客 898

历年安徽省省赛AHOI初中组考点分类汇总考点分类汇总

持续更新中.....

weixin_42358969的博客 818

用bitmap解决海量电话号码统计问题

原文:http://blog.youkuaiyun.com/chris820313/article/details/6795561 为准备某几个大公司的笔试,看到这样一个问题: 已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。 我所拜读的材料里提到了用bitmap解决这种问题,也就是说: 每一个电话号码被映射到了不同的位。 例如: 6123456

u013322907的专栏 3597

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

如何使用Excel统计某电话号码有多少人打过

图二:用户正面的数字是该电话所使用的次数,如果一个电话只被某一用户打过,这样就不统计,换句话说就是统计结果表中的电话号码至少被两个以上的用户打过。⒈ 因为用户的数量是未知的,但从第2列开始是已经的,这样我们就可以通过循环来进行统计。⒉ 首先将所有用户的电话(不重复,重复的只取一次),提取出来存放到统计结果表中。这样结果表中的电话是唯一的。图一:用户一、用户二、用户三、用户四正面的数字为模拟的电话号码;⒊ 通过结果表的电话号码为基础,统计每个用户使用该号码的次数并将统计的结果存放到结果表该用户下。

fulanke1的博客 518

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

如何统计不同电话号码的个数?—位图法

有人说遍历,使用HashSet或者int数组来存储,这里先不谈算法效率的问题,这100亿数据如何在能否在内存中放下也是一个问题。如果用int类型来存储这100亿个电话号码,那么就需要 100亿 * 4字节 = 37GB ≈ 40GB。所以这些方法行不通的根本原因实际上是内存不够。

SevenCoding的博客 1879

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。

已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。    8位最多99 999 999,大概需要99m个bit,大概10几m字节的内存即可。 (可以理解为从0-99 999 999的数字,每个数字对应一个Bit位,所以只需要99M个Bit==1.2MBytes,这样,就用了小小的1.2M左右的内存表示了所有的8位数的电话) #include #inc

遨游太空2014 4073
上一篇: 统计字符数
下一篇: 判断闰年
xiaoxiaojinglinger
博客等级 码龄7年 38粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值