BZOJ 1833 count 数字计数
2024-09-21 11:46:34
sb数位dp.
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long a,b,dp[][],tab[],ans[],bit[],ret=;
void get_table()
{
tab[]=;
for (long long i=;i<=;i++) tab[i]=tab[i-]*;
for (long long i=;i<=;i++) dp[][i]=;
for (long long i=;i<=;i++)
for (long long j=;j<=;j++)
dp[i][j]=dp[i-][j]*+tab[i-];
}
void get_bit(long long x)
{
ret=;
while (x) {bit[++ret]=x%;x/=;}
}
void work(long long x,long long val)
{
if (!x) return;
get_bit(x);
for (long long i=;i<=ret-;i++)
for (long long j=;j<=;j++)
{
ans[j]+=tab[i-]*val;
for (long long k=;k<=;k++) ans[k]+=dp[i-][k]*val;
}
for (long long i=ret;i>=;i--)
{
for (long long j=(i==ret);j<bit[i];j++)
{
ans[j]+=tab[i-]*val;
for (long long k=;k<=;k++) ans[k]+=dp[i-][k]*val;
}
ans[bit[i]]+=(x-bit[i]*tab[i-]+)*val;x%=tab[i-];
}
}
int main()
{
scanf("%lld%lld",&a,&b);get_table();
work(b,);work(a-,-);
for (long long i=;i<=;i++) printf("%lld ",ans[i]);printf("%lld\n",ans[]);
return ;
}
最新文章
- Elasticsearch mysql 增量同步 三表联合 脚本
- test-output目录中找不到testng-fail.xml原因+Reportng+ant build.xml文件
- jquery实现隐藏,简化和更多
- Installing Ruby 1.9.3 on Ubuntu 12.04 Precise Pengolin (without RVM)
- Ubuntu12.10编译openwrt遇到的错误
- Python守护进程(多线程开发)
- VC一些经验系列: 《分享泄漏检测工具:内存、DC、GDI、Handle... 》
- 【02】尽量以const,enum,inline替换#define
- GRUB损坏后,如何修复windows启动mbr
- video+ audio
- ISLR系列:(4.3)模型选择 PCR &; PLS
- isPrototypeOf、instanceof、hasOwnProperty函数介绍
- react react-transition-group实现动画
- Hdu-2008
- 快速排序——Quick Sort
- 原型模式Prototype,constructor,__proto__详解
- Java是如何读到hbase-site.xml 的内容的
- 阿里云centos 6安装iRedmail过程
- vmware 安装ubuntu
- Jmeter实现webservice的接口测试