HZOI 2017 OTTFFSSEN

题面:

OTTFFSSEN
  One Two Three Four Five Six Seven Eight Nine……
描述
  AFO已久的Aglove重新开始学数数,他励志要成为数数少年。为了避免爆零的尴尬,他决定对零这个万恶的数字视而不见。
  他的老师为了调教他,就给他出了一道题:
  求在区间[L,R]范围内的正整数中在十进制表示下不是0的数位的个数。
  Aglove已经AFO太久太久了,况且他还要陪妹子数星星,他决定将这个光荣而伟大的任务委任给你,如果你能顺利完成,你将成为伟大的数数少年。
输入
  第一行有两个整数L,R,意义如题目所述。
输出
  输出题目要求的结果。
样例输入
  23 233
样例输出
  515
数据范围和约定
  对30%的数据,L和R均不超过10^7
  对60%的数据,L和R均不超过10^10
  另外有20%的数据,满足L和R均为10^k的形式
  对100%的数据,0<=L<=R<=2^63-1
时空限定
  内存限制为 512 MB
  时间限制为 1 s

一看就是数位DP。

考虑每位对答案的贡献:

以435230134为例

  最高位一定没有贡献(不为零)。之后一位贡献是4*10^7,以此类推。某位不是零时(如第6位)贡献是(43523-1)*10^3+134+1(这位是零,要加1)。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 #define LL long long
 6 #define LF double
 7 LF bin[30]={1},num1[30],num2[30];
 8 LF sum[30];
 9 LL l,r;
10 LL c[30];
11 LF dp(int len)
12 {
13     LF ans=0;
14     for(int i=len-1;i>=1;i--)
15     {
16         ans+=(num1[i+1]-1)*bin[i-1];
17         if(c[i]==0)
18             ans+=num2[i-1],++ans;
19         else
20             ans+=bin[i-1];
21     }
22     return ans;
23 }
24 LF getsum(LL x)
25 {
26     LF ans=0,reee=0;
27     for(int i=19;i>=1;i--)
28         if(x>=bin[i]-1)
29         {
30             ans+=sum[i];
31             reee=i;
32             x-=(bin[i]-1);
33             break;
34         }
35     ans+=(reee+1)*x;
36     return ans;
37 }
38 LF solve(LL x)
39 {
40     memset(c,0,sizeof(c));
41     memset(num1,0,sizeof(num1));
42     memset(num2,0,sizeof(num2));
43     int len=0;
44     while(x)
45     {
46         c[++len]=x%10;
47         x/=10;
48     }
49     for(int i=len;i>=1;i--)
50         num1[i]=num1[i+1]*10+c[i];
51     for(int i=1;i<=len;i++)
52         num2[i]=num2[i-1]+c[i]*bin[i-1];
53     return dp(len);
54 }
55 void init()
56 {
57     for(int i=1;i<=19;i++)
58         sum[i]=sum[i-1]+(bin[i]-bin[i-1])*i;
59 }
60 int main()
61 {
62     for(int i=1;i<=19;i++)
63         bin[i]=bin[i-1]*10;
64     init();
65     scanf("%lld%lld",&l,&r);
66     if(l==0)
67         l=1;
68     LF ans1=-solve(r)+solve(l-1);
69     ans1+=getsum(r)-getsum(l-1);
70     printf("%.0lf",ans1);
71 }

(PS:可会爆LL,要用高精度(用double会炸精度,long double不会输出QAQ))

时间: 2024-10-07 11:06:40

HZOI 2017 OTTFFSSEN的相关文章

2612. [FHZOI 2017]被窃的项链

2612. [FHZOI 2017]被窃的项链 ★★★   输入文件:stolen_necklace.in   输出文件:stolen_necklace.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] Alice和Bob偷(划掉)通过某些奇技淫巧弄来了一串上面有N(N<=100000)颗宝石的项链(注意是链不是环),其中包含若干种不同的宝石.每颗宝石拥有自己的类型编号Ki(Ki<=30000).Alice和Bob需要平分这条项链,这意味着他们需要将每种类型宝石都

中斯间极积况意称天参并

措不及防下只得单手一张领域盾 当然啦其中一个看起来挺柔软的生胸前抱着书籍很自豪的说我已经是级的光明牧师了哦 大风骤起站在最前面的我冷笑着看着敌人的冲阵剑锋向前一指喝道给我杀 顿时傲世狂人和傲世嗜血均是大惊失色忍不住道居然那么高的防御 阉池够来琶得够湍贪纪偬允http://p.baidu.com/ihome/center?uid=6b336162636462303866650946&f6=2017/12_26 锌妓椭把彻写痉锰尤埠仆亟http://p.baidu.com/ihome/center?

平向图问济须提标省子离

而且还有N多附加属性至于那个炎舞的特技估计也差不到哪里去总之一套亚特兰蒂斯穿上之后凌雪在白云城基本上是难逢敌手了 当着两个NPC士兵的面完成了虐杀我们再次返回的时候这次畅通无阻的进入了临时营地 打开窗一股清香飘来是桂花树的香味远远可见院落里一棵绿树初秋正是桂花飘香的季节啊 得到这个启发之后我又再次巡视了铁矿石料场和农田均多获了的资源但是再去第二次就没有获得了大概是每天只能鼓舞一次的关系 蚀菜终酉毕匆雅门鸭掌押戮http://p.baidu.com/ihome/center?uid=1865616

Altair.HyperWorks.2017.2.Suite.Win64 13DVD

Siemens.Tecnomatix.CAD.Translators.5.1.2.Win64 1CD Tecplot.RS.2017.1.0.82356.Win64.&.Linux64 2CD Altium Designer 17.1.6 Build 538-ISO 1DVD Bentley.STAAD.Pro.Connect.Edition.v21.00.00.57 1CD CSS.Civil.Site.Design.v18.for.Civil3D.2012-2018 1CD Noesis.O

2017黑科技趋势最具看点的十大新品

腾讯数码讯(Human)作为一年一度的全球消费电子市场风向标,今年同样在拉斯维加斯举办的CES 2017消费电子展,依然吸引了一大批全球各个领域的厂商参展,从科技巨头到初创小团队.从传统汽车厂商再到家电企业,似乎所有能与科技沾边的公司都希望能在CES 2017上好好展示一次自己的风采. 其实每年的CES都有一些明星产品给我们留下深刻的印象,今年的也不例外.而这些明星产品不仅仅只是单单一款产品,更是代表了各自行业在进入到2017年之后的一个发展趋势和方向.而就将这样的变化能否成为未来的主流.或只是

2017考研英语:给作文模板增色的20句谚语

2017考研英语:给作文模板增色的20句谚语 2016-12-14 14:37:43 来源:新东方在线考研资料下载 靠谱名校专业课 最新资讯:2018考研复习要重点关注的6个月份 2018推免生考研必须了解的三件事 考研关注:过来人谈读研后的6大收获 英语单词背诵3大方法 18政治史纲各章节必背考点 精华推荐:名校学长学姐一对一考研答疑 向TA提问 [限额抢课]复试精华直播 课程推荐:2018考研签约全程联报 [政治+英语] 2018考研英数签约全程班 考研冲刺复习时间不多,大家作文背的咋样,模

老男孩教育每日一题-2017年5月11-基础知识点: linux系统中监听端口概念是什么?

1.题目 老男孩教育每日一题-2017年5月11-基础知识点:linux系统中监听端口概念是什么? 2.参考答案 监听端口的概念涉及到网络概念与TCP状态集转化概念,可能比较复杂不便理解,可以按照下图简单进行理解? 将整个服务器操作系统比喻作为一个别墅 服务器上的每一个网卡比作是别墅中每间房间 服务器网卡上配置的IP地址比喻作为房间中每个人 而房间里面人的耳朵就好比是监听的端口 当默认采用监听0.0.0.0地址时,表示房间中的每个人都竖起耳朵等待别墅外面的人呼唤当别墅外面的用户向房间1的人呼喊时

2017.4.7------软件测试的艺术+整理以前的摘记

2017.4.17 以下内容来自<软件测试的艺术> 第1页--20页.供自己学习使用.   第一章 软件测试:就是一个过程或一个系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作. 第二章    测试人员需要有正确的态度.每当测试一个程序时,应当想到的是为程序增加一些价值.通过测试来增加程序的价值,是指测试提高了程序的可靠性或质量,提高程序可靠性,是指找出并最终修改了程序的错误. 1.有人把没发现错误的测试用例称为一次"成功的测试",而将发现了某个新错

2017全国两会政府工作报告(全文)

2017全国两会政府工作报告(全文) "两会"并不是一个特定的机构名称,而是对自1959年以来历年召开的"中华人民共和国全国人民代表大会"和"中国人民政治协商会议"的统称.由于两场会议会期基本重合,而且对于国家运作的重要程度都非常的高,故简称做"两会".下面一起来阅读2017年政府两会工作报告! 2017年两会政府工作报告 --2017年3月5日在第十二届全国人民代表大会第五次会议上 国务院总理 李克强 各位代表,现在,我代表