博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数字计数
阅读量:5172 次
发布时间:2019-06-13

本文共 733 字,大约阅读时间需要 2 分钟。

数字计数 (奇特的数位dp)

给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。

这道题就是枚举第i个数位是什么数字,然后乘法原理搞一搞。小心当前枚举的数位是0的情况,需要特判前导零。

#include 
using namespace std;typedef long long LL;const LL maxl=14;LL pow[maxl], ans[10];LL a, b;void solve(LL x, LL pos){ if (x==-1){ ans[0]+=1; return; } LL now, high, low, flag, len=0; for (; pow[len]<=x; ++len); for (LL i=0; i
now) ans[j]+=((high-flag)*pow[i])*pos; } }}void init_pow(){ pow[0]=1; for (LL i=1; i<=maxl; ++i) pow[i]=pow[i-1]*10;}int main(){ init_pow(); scanf("%lld%lld", &a, &b); solve(b, 1); solve(a-1, -1); for (LL i=0; i<=9; ++i) printf("%lld ", ans[i]); return 0;}

转载于:https://www.cnblogs.com/MyNameIsPc/p/7729357.html

你可能感兴趣的文章
平衡二叉树(AVL Tree)
查看>>
【BZOJ3295】[Cqoi2011]动态逆序对 cdq分治
查看>>
【CF799E】Aquarium decoration 线段树
查看>>
大运飞天 鲲鹏展翅
查看>>
从ECMA到W3C
查看>>
软件工程--第十六周学习进度
查看>>
yii2 ActiveRecord多表关联以及多表关联搜索的实现
查看>>
搜狗输入法安装--ubuntu
查看>>
ps/2接口键盘的输入及显示
查看>>
Swift———a Glance(极客学院)笔记
查看>>
【poj3294-不小于k个字符串中最长公共子串】后缀数组
查看>>
java如何获取其它用户登录的真是IP地址
查看>>
Jquery通过指定层次关系获取元素
查看>>
c# for 和 foreach 的区别
查看>>
docfx (一)
查看>>
HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别
查看>>
深度学习之前馈神经网络(前向传播和误差反向传播)
查看>>
IEnumerable<T>和IQueryable<T>区别
查看>>
(转)MFC界面风格
查看>>
Centos7 tmux1.6 安装
查看>>