牛客----电话号码

简介: 牛客----电话号码

题目描述

给你一个整数n表示手机号码的位数

再给你m个字符串表示保留的号码,比如911 110 120等

问你一共有多少的手机号码不以保留号码开头

输入描述:

第一行输入两个整数n, m (1 ≤ n ≤ 17, 0 ≤ m ≤ 50)

接下来m行每行输入一个数字串,长度为1到n

输出描述:

输出一个整数

示例1输入

7 3
0 
1
911


示例1输出

7990000

示例2输入

10 3
0
1
911


示例2输出

7990000000


示例3输入

8 3
1
12
123


示例3输出

90000000


示例4输入

9 3
12
13
14


示例4输出

970000000

示例5输入

3 1
411


示例5输出

999

题目分析:由于保留手机号码较少,所以可以逆向思考,用总的情况减去以这些号码开头的数量;

但要注意,有可能这里面存在一个号码A是另一个号码B的前缀,这样的话在计算时,只需要计算A的情况即可.

AC代码

#include<bits/stdc++.h>
#include<cmath>
using namespace std;
typedef long long LL;
LL cal(int x){
  return pow(10,x);
}
int judge(string &s1,string &s2)//判断s2是否是s1的前缀.
{
  int len1 = s1.size();
  int len2 = s2.size();
  if(len1<=len2){//s2长度比s1小,不可能是s1前缀, 
    return 0;
  }//len1>len2 
  for(int i = 0;i<len2;i++){
    if(s1[i]!=s2[i]){//如果不想等. 
      return 0;
    }
  }
  return 1;
} 
LL ans;
string arr[55];//字符串数组,用于存储保留手机号 
int n,vis[50],m; //vis标记是否是前缀.如果是1说明另一个是该字符串的前缀,当前 字符串无需考虑. 
int main()
{
  cin>>n>>m;
  for(int i = 0;i < m;i++){
    cin>>arr[i];
  } 
  //判断串的前缀
  for(int i = 0; i < m;i++){
    for(int j = 0;j < m;j++){
      if(i!=j&&judge(arr[i],arr[j])){
        vis[i] = 1;
      }
    }
  } 
  ans = cal(n);
  for(int i = 0;i < m;i++){
    if(!vis[i]){
      int len = n-arr[i].size();
      ans -= cal(len);
    }
  }
  cout<<ans<<endl;
  return 0;
} 
相关文章
|
监控 Linux
jmeter-性能监控CPU、内存、IO等-监控插件详解(1)
jmeter-性能监控CPU、内存、IO等-监控插件详解(1)
jmeter-性能监控CPU、内存、IO等-监控插件详解(1)
|
监控 Oracle 小程序
2021 最新版 JDK 1.8 下载与安装 步骤演示 (图示版)(一)
2021 最新版 JDK 1.8 下载与安装 步骤演示 (图示版)
1375 0
2021 最新版 JDK 1.8 下载与安装 步骤演示 (图示版)(一)
|
人工智能 负载均衡 数据可视化
10分钟上手全球开源模型冠军 Qwen3
阿里通义千问Qwen3在最新全球AI基准测试中智能水平位列全球前五,开源第一,且成本优势显著,推理成本仅为DeepSeek-R1的1/3、Claude 3.7的1/20。Qwen3支持119种语言,具备强大的代码和数学能力,同时提供思考与非思考两种模式无缝切换,适合复杂与简单任务。通过阿里云百炼平台,用户可在10分钟内快速搭建Qwen3模型服务,结合Cherry Studio客户端实现便捷交互。本文详细介绍了Qwen3的部署、体验及工具调用能力,帮助用户轻松上手。
|
算法
数据结构之路由表查找算法(深度优先搜索和宽度优先搜索)
在网络通信中,路由表用于指导数据包的传输路径。本文介绍了两种常用的路由表查找算法——深度优先算法(DFS)和宽度优先算法(BFS)。DFS使用栈实现,适合路径问题;BFS使用队列,保证找到最短路径。两者均能有效查找路由信息,但适用场景不同,需根据具体需求选择。文中还提供了这两种算法的核心代码及测试结果,验证了算法的有效性。
548 23
|
数据采集 机器学习/深度学习 数据挖掘
R语言数据清洗:高效处理缺失值与重复数据的策略
【8月更文挑战第29天】处理缺失值和重复数据是数据清洗中的基础而重要的步骤。在R语言中,我们拥有多种工具和方法来有效地应对这些问题。通过识别、删除或插补缺失值,以及删除重复数据,我们可以提高数据集的质量和可靠性,为后续的数据分析和建模工作打下坚实的基础。 需要注意的是,处理缺失值和重复数据时,我们应根据实际情况和数据特性选择合适的方法,并在处理过程中保持谨慎,以避免引入新的偏差或错误。
|
缓存 监控 算法
HyperLogLog有哪些应用场景呢
【10月更文挑战第19天】HyperLogLog有哪些应用场景呢
|
XML 数据可视化 Java
文本对比工具,绕不开这个6款!
文本对比工具,绕不开这个6款!
1821 0
技术创新与个人成长的思考
技术创新是时代的推动力,而在不断迭代的科技领域中,个人成长也同样需要不断的探索和进步。本文将从个人角度出发,探讨技术创新对个人成长的影响,并分享在技术道路上的感悟与体会。
407 0
|
JavaScript
【vue】 vue 实现视频播放 vue-video-player
【vue】 vue 实现视频播放 vue-video-player
759 0
|
Java 关系型数据库 MySQL
将springboot项目部署到阿里云服务器
将springboot项目部署到阿里云服务器