P2602 [ZJOI2010]数字计数
https://www.luogu.org/problemnew/show/P2602
数位dp
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const double minv=1e-; ll g[],shi[]; void cal(ll a,ll c,int ori)
{
int i,w,s;
w=(log(a+minv)/log());
i=w;
while (i>=)
g[]-=shi[i--]*c;
while (w>=)
{
s=a/shi[w];
if (w!=)
for (i=;i<;i++)
g[i]+=s*shi[w-]*w*c;
for (i=;i<s;i++)
g[i]+=shi[w]*c;
g[s]+=(a%shi[w]+)*c;
a=a%shi[w];
w--;
}
} int main()
{
ll a,b;
int i;
scanf("%lld%lld",&a,&b);
shi[]=;
for (i=;i<=;i++)
shi[i]=shi[i-]*;
cal(b,,);
cal(a-,-,);
for (i=;i<;i++)
{
printf("%lld",g[i]);
if (i!=)
printf(" ");
}
return ;
}
/*
1 999
5 10
10 20
10 19
1 1000000000000
99 1000000000000
*/
/*
13 99
8 15 18 19 19 19 19 19 19 19
13 550
104 210 213 214 214 156 104 104 104 104
2 110
21 32 21 21 21 21 21 21 21 21
1 100000000
68888897 80000001 80000000 80000000 80000000 80000000 80000000 80000000 80000000 80000000
*/
验证
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e5+; ll g[]; int main()
{
int i,j;
ll a,b;
scanf("%lld%lld",&a,&b);
for (i=a;i<=b;i++)
{
j=i;
while (j)
{
g[j%]++;
j/=;
}
}
for (i=;i<;i++)
printf("%lld ",g[i]);
return ;
}
/*
13 99
8 15 18 19 19 19 19 19 19 19
13 550
104 210 213 214 214 156 104 104 104 104
2 110
21 32 21 21 21 21 21 21 21 21
1 100000000
68888897 80000001 80000000 80000000 80000000 80000000 80000000 80000000 80000000 80000000
*/
P2602 [ZJOI2010]数字计数的更多相关文章
- P2602 [ZJOI2010]数字计数(递推)
P2602 [ZJOI2010]数字计数 思路: 首先考虑含有前导0的情况,可以发现在相同的\(i\)位数中,每个数的出现次数都是相等的.所以我们可以设\(f(i)\)为\(i\)位数每个数的出现次数 ...
- P2602 [ZJOI2010]数字计数&P1239 计数器&P4999 烦人的数学作业
P2602 [ZJOI2010]数字计数 题解 DFS 恶心的数位DP 对于这道题,我们可以一个数字一个数字的求 也就是分别统计区间 [ L , R ] 内部数字 i 出现的次数 (0<=i&l ...
- 数位dp详解&&LG P2602 [ZJOI2010]数字计数
数位dp,适用于解决一类求x~y之间有多少个符合要求的数或者其他. 例题 题目描述 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除 ...
- 洛谷P2602 [ZJOI2010]数字计数 题解 数位DP
题目链接:https://www.luogu.com.cn/problem/P2602 题目大意: 计算区间 \([L,R]\) 范围内 \(0 \sim 9\) 各出现了多少次? 解题思路: 使用 ...
- 洛谷P2602 [ZJOI2010]数字计数(数位dp)
数字计数 题目传送门 解题思路 用\(dp[i][j][k]\)来表示长度为\(i\)且以\(j\)为开头的数里\(k\)出现的次数. 则转移方程式为:\(dp[i][j][k] += \sum_{t ...
- Luogu P2602 [ZJOI2010]数字计数
这算是一道数位DP的入门题了吧虽然对于我来说还是有点烦 经典起手式不讲了吧,\(ans(a,b)\to ans(1,b)-ans(1,a-1)\) 我们首先预处理一个东西,用\(f_i\)表示有\(i ...
- 洛谷 P2602 [ZJOI2010]数字计数
洛谷 第一次找规律A了一道紫题,写篇博客纪念一下. 这题很明显是数位dp,但是身为蒟蒻我不会呀,于是就像分块打表水过去. 数据范围是\(10^{12}\),我就\(10^6\)一百万一百万的打表. 于 ...
- [洛谷P2602][ZJOI2010]数字计数
题目大意:求区间$[l,r]$中数字$0\sim9$出现个数 题解:数位$DP$ 卡点:无 C++ Code: #include <cstdio> #include <iostrea ...
- Luogu P2602 [ZJOI2010]数字计数 数位DP
很久以前就...但是一直咕咕咕 思路:数位$DP$ 提交:1次 题解:见代码 #include<cstdio> #include<iostream> #include<c ...
随机推荐
- python之路--FTP 上传视频示例
# 服务端 import json import socket import struct server = socket.socket() server.bind(('127.0.0.1',8001 ...
- 【转】说说MySQL中的Redo log Undo log都在干啥
阅读目录(Content) 1 undo 1.1 undo是啥 1.2 undo参数 1.3 undo空间管理 2 redo 2.1 redo是啥 2.2 redo 参数 2.3 redo 空间管理 ...
- python numpy笔记(重要)
1.np.array 的shape (2,)与(2,1)含义 ndarray.shape:数组的维度.为一个表示数组在每个维度上大小的整数元组.例如二维数组中,表示数组的“行数”和“列数”. ndar ...
- 如何设置C-Lodop打印控件的端口
Lodop是一款功能强大的打印控件,在一些浏览器不再支持np插件之后,Lodop公司又推出了C-Lodop,C-Lodop是以服务的方式解决web打印,摆脱了对浏览器的依赖,支持了所有的浏览器. 该控 ...
- Windows7 (Win7) 配置Windows Update 时失败 正在还原更改
用WinPE启动后,进入Windows\WinSxS目录,想办法删掉pending.xml和reboot.xml
- SOJ 1685:chopsticks(dp)
题目链接 说实话挺喜欢soj的界面,简简单单,没有多余的东西hhh(但是简单到连内存限制,时间限制都看不到了. 题意是有个“奇葩”的主人公,吃饭要用三根筷子.两根短的一根长的. 现在给你n根筷子,要在 ...
- C 语言----- 指针
指针是一个值为内存地址的变量, 指针的核心是它是一个变量, 只不过它是用来存放内存地址的, 所以在了解指针之前,先说一下什么是变量.变量就是在内存中开辟的一个空间.如int year, 就是在内存中开 ...
- codeforces285B
Find Marble CodeForces - 285B Petya and Vasya are playing a game. Petya's got n non-transparent glas ...
- hdu-4825(01字典树)
题意:中文题意 解题思路:01字典树板子题 代码: #include<iostream> #include<algorithm> #include<cstdio> ...
- Java常用调试技巧(转)
调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷.对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序.本文介绍了Java程序员必知的10个调试技巧, ...