王女士是一个数学爱好者,这些天她对B数很感兴趣。 B数的定义:能被13整除且本身包含字符串”13”的数。例如:130和2613是B数,但是143和2639不是B数。 你的任务是计算1到n之间有多少个数是B数。

这道题可以算是一道较水的数位dp,可以说是比较套路了,把握好f数组就好了。定义f[i][j][k1][k2],i为枚举到的位数(从后往前),j为枚举到的前一个的数,k1表示这个数是否包含“13”,k2为目前枚举到的数部分%13的数。之后就不详解了。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
using namespace std;
int a[20];
long long f[18][10][2][15],s[18];
long long dfs(int pos,int sta,long long ss,bool limt,bool lead)
{if(pos==0){if(ss==0 && lead==true)return 1;else return 0;}if(limt==false && f[pos][sta][lead][ss]!=-1)return f[pos][sta][lead][ss];int up=9;long long ans=0;if(limt==true)up=a[pos];for(int i=0;i<=up;i++){bool bk1=false,bk2=lead;if(limt==true && i==a[pos])bk1=true;if(sta==1 && i==3)bk2=true;ans+=dfs(pos-1,i,(ss+i*s[pos])%13,bk1,bk2);}if(limt==false)f[pos][sta][lead][ss]=ans;return ans;
}
long long solve(long long x)
{int pos=0;while(x){a[++pos]=x%10;x/=10;}memset(f,-1,sizeof(f));return dfs(pos,0,0,true,false);
}
int main()
{s[1]=1;for(int i=2;i<=15;i++)s[i]=s[i-1]*10;long long n;scanf("%lld",&n);printf("%lld\n",solve(n));return 0;
}

[bzoj 5064]B-number相关推荐

  1. BZOJ 5064: B-number

    数位DP #include<cstdio> #include<cstring> using namespace std; int A[16]; long long F[16][ ...

  2. BZOJ 1114 Number theory(莫比乌斯反演+预处理)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=71738 题意:给你一个整数序列a1, a2, a3, ... , ...

  3. bzoj:1666: [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏

    Description 奶牛们又在玩一种无聊的数字游戏.输得很郁闷的贝茜想请你写个程序来帮她在开局时预测结果.在游戏的开始,每头牛都会得到一个数N(1<=N<=1,000,000).此时奶 ...

  4. 【bzoj 1754】【POJ - 2389 】Bull Math (高精度运算)

    题干: Bulls are so much better at math than the cows. They can multiply huge integers together and get ...

  5. BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数(数位DP+恶心细节)

    BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 Time Limit: 5 Sec  Memory Limit: 64 MB Description 正如你所知 ...

  6. BZOJ 4443: [Scoi2015]小凸玩矩阵

    二次联通门 : BZOJ 4443: [Scoi2015]小凸玩矩阵 /*BZOJ 4443: [Scoi2015]小凸玩矩阵本来以为是道数据结构题后来想了想发现不可做就考虑二分dp判断推方程推不出来 ...

  7. 【BZOJ】【3301】【USACO2011 Feb】Cow Line

    康托展开 裸的康托展开&逆康托展开 康托展开就是一种特殊的hash,且是可逆的-- 康托展开计算的是有多少种排列的字典序比这个小,所以编号应该+1:逆运算同理(-1). 序列->序号:( ...

  8. 贝尔数C语言,bzoj 3501 PA2008 Cliquers Strike Back——贝尔数

    用贝尔三角形 p^2 地预处理 p 以内的贝尔数.可以模(mod-1)(它是每个分解下的质因子的倍数,所以不影响分开算的时候). 用公式:\( Bell[n+p^{m}]=m*Bell[n]+Bell ...

  9. [Luogu P3147] [BZOJ 4576] [USACO16OPEN]262144

    洛谷传送门 BZOJ传送门 题目描述 Bessie likes downloading games to play on her cell phone, even though she doesfin ...

  10. Tyvj P3572 BZOJ 1122 账本BBB

    描述 一个长度为n的记账单,+表示存¥1,-表示取¥1.  现在发现记账单有问题.  一开始本来已经存了¥p,并且知道最后账户上还有¥q.  你要把记账单修改正确,使得  1:账户永远不会出现负数:  ...

最新文章

  1. 操作系统 第一章【操作系统引论】【MOOC答案】
  2. Maven学习-优化和重构POM
  3. 程序员自身价值值这么多钱么?
  4. videojs插件的参数解释
  5. 大龄技术人的出路在哪里?6月20日长沙-中国技术开放日邀请你一起探讨
  6. 我发起了一个 .Net Core 平台上的 分布式缓存 开源项目 ShareMemory 用于 取代 Redis...
  7. 微信模板消息400001:invalid credential, access_token is invalid or not latest
  8. 识辨 | 什么是分类?什么是聚类?
  9. Adobe flash builder 4 不生效的序列号说明及解決方法
  10. zebradesginer zpl代码_ZebraDesigner Pro 斑马打印机命令 解读
  11. RGSSAD解密程序(基于RgssadUnpacker改进以支持RGSS3A)
  12. Android实用视图动画及工具系列之六:通用表情栏,仿QQ微信聊天弹出表情选框
  13. 使用node加密excel文件
  14. MHA-结合MySQL半同步复制高可用集群(Centos7)
  15. LabVIEW串口仪器控制
  16. xshell6无法卸载、重新安装【1628: 完成基于脚本的安装失败】
  17. 2017百度之星 复赛
  18. Elasticsearch 如何处理 word pdf ?(Ingest Attachment Processor Plugin)
  19. python | 统计频次
  20. 操作系统知识点总结(一)

热门文章

  1. 最近项目上遇到的问题~
  2. 什么叫定向广告?定向传播有哪些好处
  3. 飞机选座——附:东航320选坐攻略
  4. css数字怎么换行,css实现连续的英文或数字自动换行的方法
  5. matlab rms数据滤波,与RMS相关的5个信息,如何通过RMS结果滤波来提高精度
  6. 微信小程序项目源码在线考试系统+后台含论文+PPT+源码
  7. 使用screw生成数据库文档
  8. AirDisk-Q3C/T2/Q3S/Q3X加密空间PIN码忘记怎么找回?
  9. a113 智能音箱芯片方案_智能音箱九大芯片方案商及其生产厂商和代表作品介绍...
  10. C语言克莱姆法解方程组解析,解线性方程组用克莱姆法则