2014.12.13模拟赛【准考证号】

准考证号 128M 0.1s ticket.cpp

escription

蒟蒻hzwer NOIP2014惨跪,他依稀记得他的准考证号是37,现在hzwer又将要面临一场比赛,他希望准考证号不出现37(连续),同时他又十分讨厌4,所以也希望4出现在准考证号中。。。现在他想知道在A和B之间有多少合法的准考证号

Input

包含两个整数,A B

Output

一个整数。

Sample Input

【输入样例一】
1 10
【输入样例二】
25 50

Sample Output

【输出样例一】
9
【输出样例二】
14
【数据规模和约定】
20%的数据,满足 1 <= A <= B <= 1000000 。
100%的数据,满足 1 <= A <= B <= 2000000000 。

数位dp

无非是f[i][j]表示i位的数第一位是j的方案数,然后乱搞

我真是太弱了……黄巨大说我写代码的风格跟**一样

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
#include<set>
#include<map>
#include<ctime>
#define LL long long
#define inf 0x7ffffff
#define pa pair<int,int>
#define pi 3.1415926535897932384626433832795028841971
using namespace std;
inline LL read()
{
    LL x=0,f=1;char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
    while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
    return x*f;
}
int f[20][10];
LL a,b;
LL sec[20];
inline void pre()
{
	sec[0]=1;for (int i=1;i<=15;i++)sec[i]=sec[i-1]*10;
	f[1][4]=1;
	for (int i=2;i<=12;i++)
	{
		for (int j=0;j<=9;j++)
		{
		  for (int k=0;k<=9;k++)
		    f[i][j]+=f[i-1][k];
		}
		f[i][3]+=sec[i-2]-f[i-1][7];
		f[i][4]=sec[i-1];
	}
}
inline LL calc(LL x)
{
	if (x<1)return 0;
	int dig[20]={0},len=0;
	LL tot=0,dat=x;
	while (x)
	{
		dig[++len]=x%10;
		x/=10;
	}
	while (len)
	{
		for (int i=0;i<dig[len];i++)tot+=(LL)f[len][i];
		if (dig[len]==4)
		{
			tot+=(LL)dat%sec[len-1]+1;
			break;
		}
		if (dig[len+1]==3&&dig[len]==7)
		{
			tot+=(LL)dat%sec[len-1]+1;
			break;
		}
		if (dig[len+1]==3&&dig[len]>7)
		{
			tot-=(LL)f[len][7];
			tot+=sec[len-1];
		}
		len--;
	}
	return dat-tot;
}
int main()
{
	freopen("ticket.in","r",stdin);
	freopen("ticket.out","w",stdout);
	pre();
	a=read();b=read();
	printf("%d\n",calc(b)-calc(a-1));
	return 0;
}
时间: 2024-08-04 02:53:48

2014.12.13模拟赛【准考证号】的相关文章

NOIP模拟赛 准考证号

准考证号 128M 0.1s ticket.cpp escription 蒟蒻hzwer NOIP2014惨跪,他依稀记得他的准考证号是37,现在hzwer又将要面临一场比赛,他希望准考证号不出现37(连续),同时他又十分讨厌4,所以也不希望4出现在准考证号中...现在他想知道在A和B之间有多少合法的准考证号 Input 包含两个整数,A B Output 一个整数. Sample Input [输入样例一] 1 10 [输入样例二] 25 50 Sample Output [输出样例一] 9

易轩网络更新页面————————2014.12.13发布

易轩网络更新页面: 最新更新动态: ★易轩★改软件标题工具—)—)豪华版              出炉! 工具大小:52.0 MB(若大于该大小则视为病毒文件处理) 工具功能:更改你想要更改软件的标题(则运行时的名称) 工具版本:v1.0.0.0 工具是否达标:是 工具是否报毒:暂未测试(若大小一致却依然报毒,请添加信任或关闭杀毒软件) 工具下载地址:http://yunpan.cn/cfxEAPKpPxzfg  提取码 ba30 工具作者:易轩 联系方式:邮箱:[email protecte

【转载】Android Studio jar、so、library项目依赖,原文链接http://zhengxiaopeng.com/2014/12/13/Android-Studio-jar、so、library项目依赖/

前言 Android Studio(以下简称AS)在13年I/O大会后放出预览版到现在放出的正式版1.0(PS.今天又更新到1.0.1了)历时一年多了,虽然Google官方推出的Android开发者的IDE对我们Android DEV是很有吸引力的,但考虑到beta版还是太多问题所以自己主要还是把AS当做尝鲜为主,每放出一个较大更新就下载下来试试,感觉还是挺好的,渐渐用AS的人越来越多,Github上的项目也基本是AS的了,Google的sample也采用AS,所以使用Eclipse跟外界交流越

2014.12.13 ASP.NET文件上传

一.文件上传:(一)上传到硬盘文件夹1.最简单的上传. [HTML代码] 1 <asp:FileUpload ID="FileUpload1" runat="server" /> 2 <asp:Button ID="Button1" runat="server" Text="上传" /> [C#代码] 1 //把相对路径,变成绝对路径 2 string path = Server.M

2017/9/13模拟赛

粉饰(decorate) [题目描述] 小D有一块被分为n*m个格子的矩形鱼片.为了装饰鱼片,小D决定给每个格子上色.由于小D很喜欢红白,所以小D给每个格子涂上了红色或白色,第i行第j列的格子颜色记为c[i,j].涂完之后,小D想评估这块鱼片的"XY值".我们定义一个有序无重复三元格子组{(x1,y1),(x2,y2),(x3,y3)}为"XY组"当且仅当: |(x1-x2)*(y1-y2)|+|(x3-x2)*(y3-y2)|=0   (c[x1,y1]-c[x2

9.13——模拟赛

T1 全排列 (permutation.cpp/c/pas)Description从 n 个不同元素中任取 m(m≤n)个元素,按照一定的顺序排列起来,叫做从 n个不同元素中取出 m 个元素的一个排列.当 m=n 时所有的排列情况叫全排列.你觉得 xxy 会问你全排列的个数吗?Xxy:这个问题能淹死你,我才不问呢.我要问的是求 n 的全排列中,先递增后递减.先递减后递增的全排列的个数.由于答案可能很大,对 p 取余Input输入包含多组测试数据每组测试数据一行两个整数 n,pOutput对于每组

2014.10.28模拟赛【时间与空间之旅】

Porble 1时间与空间之旅(tstrip.*) 题目描述 公元22××年,宇宙中最普遍的交通工具是spaceship.spaceship的出现使得星系之间的联系变得更为紧密,所以spaceship船长也成了最热门的职业之一.当然,要成为一名出色的船长,必须通过严格的考核,例如下面是最简单的问题中的一个. 用1~n的整数给n个星系标号,目前你在标号为1的星系,你需要送快递到标号为n的星系,星系之间由于存在陨石带,并不是都可以直连的.同时,由于超时空隧道的存在,在某些星系间飞行会出现时间静止甚至

2014.09.13 网络赛杂感

在参加这场网络赛之前,我还在为暑假刷的一百多道水题而洋洋自得. 直到我开始做题的时候,才回想起那最初支配我的恐惧(借用的进击的巨人的台词,这句有点恶搞了). 十道题,五个小时,我们几个人也就解决了两道题.第二道计算几何的那道题是我们一番讨论才A过去的,虽然我几乎没有做过计算几何这类的题目,公式都是自己先推的. 更虐心的是,出题人是与我同龄的CLJ. 这种被俯视的感觉完全抬不起头来,就如同蝼蚁一般. 今天有点冷,下了一天的雨.我们连比赛的机房都没有,几个人找了个自习室,连上校园网默默的打比赛. 还

9.13模拟赛

全排列 (permutation.cpp/c/pas)Description从 n 个不同元素中任取 m(m≤n)个元素,按照一定的顺序排列起来,叫做从 n个不同元素中取出 m 个元素的一个排列.当 m=n 时所有的排列情况叫全排列.你觉得 xxy 会问你全排列的个数吗?Xxy:这个问题能淹死你,我才不问呢.我要问的是求 n 的全排列中,先递增后递减.先递减后递增的全排列的个数.由于答案可能很大,对 p 取余Input输入包含多组测试数据每组测试数据一行两个整数 n,pOutput对于每组测试数