手机号码

2024-03-16 23:48
文章标签 手机号码

本文主要是介绍手机号码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

手机号码

题解

一道典型的数位dp,我们只需要将它的编号,是上一位,上两位,是否有三个连续,是否有4,是否有8,加入dp。我们可以用dfs,来更新数位dp。注意在dfs中加入是否达到当前最大值,来枚举当前数字。

源码

#include<cstdio>
#include<cstring>
#include<iostream> 
#include<algorithm>
#include<stack>
#include<vector>
#include<queue>
using namespace std;
typedef long long LL;
#define gc() getchar()
LL l,r,pow_10[20];
LL dp[15][15][15][5][5][5]; 
template<typename _T>
inline void read(_T &x)
{_T f=1;x=0;char s=gc();while(s>'9'||s<'0'){if(s=='-')f=-1;s=gc();}while(s>='0'&&s<='9'){x=(x<<3)+(x<<1)+(s^48);s=gc();}x*=f;
}
LL dfs(LL x,LL id,LL im,LL in,bool s1,bool s2,bool s3,bool s4)
{if(s2&&s3) return 0;//是否同时出现4与8if(!id) return s1;//是否枚举到第11位if(!s4&&dp[id][im][in][s1][s2][s3]!=-1)return dp[id][im][in][s1][s2][s3];//是否更新过LL res=0,maxx=s4?x/pow_10[id-1]%10:9;for(int i=0;i<=maxx;i++)res+=dfs(x,id-1,i,im,s1||(i==in&&i==im),s2||i==8,s3||i==4,s4&&i==maxx);//更新当前值if(!s4) dp[id][im][in][s1][s2][s3]=res;//记忆化return res;
}
LL solve(LL x)
{if(x<pow_10[10]) return 0;memset(dp,-1,sizeof(dp));LL ans=0;for(int i=1;i<=x/pow_10[10];i++)ans+=dfs(x,10,i,0,0,i==8,i==4,i==x/pow_10[10]);//第一位不能为0,必须枚举第一位。return ans;
}
int main()
{pow_10[0]=1;for(int i=1;i<=11;i++)pow_10[i]=pow_10[i-1]*10;//预处理10的次方read(l);read(r);printf("%lld\n",solve(r)-solve(l-1));return 0;
}

谢谢!!!

这篇关于手机号码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/817132

相关文章

【go语言爬虫】go语言高性能抓取手机号码归属地、所属运营商

一、需求分析 根据手机号码获取手机号码的归属地和所属运营商类型 类似:四川 18683339513 乐山 614000 0833 中国联通 二、运行效果 三、实现源代码 package main//网址:https://github.com/M2shad0w/phone-go//安装包:go get github.com/M2shad0w/phone-goimport ("fmt

JS 判断是否手机号码

var mobile = $("#ismobile").val();if (mobile && /^1(3\d|47|(5[0-3|5-9])|(7[0|7|8])|(8[0-3|5-9]))-?\d{4}-?\d{4}$/.test(mobile)) {if (mobile.length > 11 || mobile.length < 11) {alert("请输入11位的手机号码");retu

uniapp微信小程序开发测试获取手机号码

先申请测试号 注意认证但是没有完全认证不要试测试号解密如下 总结我自己的两大坑 1.官网的WXBizDataCrypt需要导入crypto要提前下载但是试了很多次没有效果重新编写这个。将crypto库换成crypto-js库 2.我一直在尝试用下有下面这个界面的测试号不行获取不到用户的code还是啥忘记了s 新建WXBizDataCrypt.js官网也有也可以直接负责下面的内容 import C

Java正则表达式判断是否为手机号码

在开发中有时会有这样的需求,就是判断用户输入的手机号码是否正确,这里就需要使用到了正则表达式。 这里贴出一个电话号码检查的工具类,基本的电话号码格式都能够满足了。 [java]  view plain copy import java.util.regex.Matcher;   import java.util.regex.Pattern;   import

手机号码和邮箱等联系地址,为什么不明文显示?

前言:其实在应用各种产品的时候,也有发现过有些手机号码和邮箱地址等,都会有一部分是密文显示。 嗯,其实最明显的就是银行卡了,基本上就没有全部明文显示的。 这两天在做一个需求的时候,刚好也有这样的要求。 之前没有想过为什么,这次简单想了想,记录一下。  一、需求整理 其实就是当为手机号:则显示前3位和后3位,其余的以*补齐; 而当是邮箱地址时,显示第一个字符以及@和之后的字符,其余的以*补齐。

h5 ios手机 禁用自动识别为手机号码

因为真正做前端h5开发的时间也不太长,所以经验上有些缺乏,有些特性不太清楚。就比如说我下面要写的一个小知识点: 有天测试告诉说,有些ios手机上,页面上某个金额会一开始显示黑色过一会就变成绿色了,我拿到视频一看,马上去检查代码(代码中写的就是color:#000黑色),我一时间只把它当成系统的特殊识别,并不知道原因的。后面测试又提供了一个有力的现象,就是发现 在一个发送验证码页面最上方提示的 已

手机号码归属地接口

手机号码归属地接口,百度上搜出来很多文章,但是里面写的接口地址,现在大多都用不了了,这里给出几个还能用的(除了百度的) 百度 好用又免费,但是今年4月份开始用不了了,至今未恢复,也不知道未来会不会恢复 http://mobsec-dianhua.baidu.com/dianhua_api/open/location?tel=15800000000 淘宝(现在用不了了!!!) 只能到省份

Android正则校验手机号码

不多说了直接上校验方法 /** * 验证手机号码 * 正确返回true,错误返回false * @param mobiles * @return [0-9]{5,9} */ public static boolean isMobileNO(String mobiles) { Pattern p = Pattern .compile("^((13[0-9]

【第001篇】Java工具类之敏感数据脱敏(如身份证、手机号码、电子邮箱、银行账号、姓名、地址脱敏)

package io.renren.modules.utils;import org.apache.commons.lang3.StringUtils;import java.util.regex.Matcher;import java.util.regex.Pattern;/*** 敏感数据脱敏工具类*/public class Desensitization {/*** 身份证号脱敏**

微信小程序手机号码授权登录

文章目录 一、微信小程序开发二、使用步骤1.前端代码2.后台配置3.后台代码 总结 一、微信小程序开发 目前个人的小程序无法使用手机号码授权登录,可以使用测试号进行开发 二、使用步骤 1.前端代码 代码如下(示例): <button open-type="getPhoneNumber" bindgetphonenumber="getUserPhoneNumber">立