[ZJOI 2010] 数字计数
2024-09-08 04:30:35
[题目链接]
https://www.lydsy.com/JudgeOnline/problem.php?id=1833
[算法]
数位DP
[代码]
#include <algorithm>
#include <bitset>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <list>
#include <map>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
#include <stack>
#include <limits.h>
using namespace std; int i;
long long a,b;
long long f[][][]; inline void dp(long long m)
{
long long i,j,k,x;
memset(f,,sizeof(f));
f[][][] = ;
for (i = ; i <= ; i++)
{
for (j = ; j <= ; j++)
{
for (k = ; k <= i; k++)
{
if (j != m)
{
for (x = ; x <= ; x++)
f[i][j][k] += f[i - ][x][k];
} else if (k >= )
{
for (x = ; x <= ; x++)
f[i][j][k] += f[i - ][x][k - ];
}
}
}
}
}
inline long long calc(long long x,long long t)
{
long long i,j,k,len = ;
long long res = ;
long long cnt = ;
long long a[];
memset(a,,sizeof(a));
while (x != )
{
a[++len] = x % ;
x /= ;
}
reverse(a + ,a + len + );
for (i = ; i <= len; i++)
{
for (j = ; j <= ; j++)
{
for (k = ; k <= len - i + ; k++)
res += f[len - i + ][j][k] * k;
}
}
for (i = ; i <= len; i++)
{
for (j = ; j < a[i]; j++)
{
if (i == && !j) continue;
for (k = cnt; k <= len; k++)
{
res += f[len - i + ][j][k - cnt] * k;
}
}
if (a[i] == t) cnt++;
}
return res;
} int main()
{ while (scanf("%lld%lld",&a,&b) && (a || b))
{
if (a > b) swap(a,b);
for (i = ; i < ; i++)
{
dp(i);
printf("%lld ",calc(b + ,i) - calc(a,i));
}
dp();
printf("%lld\n",calc(b + ,) - calc(a,));
} return ; }
最新文章
- JUCE 界面库显示中文乱码问题
- 第四章 分治策略 4.2 矩阵乘法的Strassen算法
- iOS使用宏写单例
- 利用dom4j读取xml文件
- webservice未能加载文件或程序集“**.DLL”或它的某一个依赖项。
- spring定时器任务多任务串行执行问题排查
- ubuntu 12.04 下搭接Qt 嵌入式开发环境
- 认识axure部件库中各个部件的属性
- DOM遍历 - 过滤
- VLAN之间单臂路由通信
- 【spark】dataframe常见操作
- c++ 指针与const的三种组合
- mongodb url
- 关于PHP建立数据库访问类的封装以及操作php单例模式连接数据库封装类
- Confluence 6 中样式化字体
- 全文索引搜索whoosh
- java中的神奇";this";
- IO流(5)判断功能
- [LeetCode] 197. Rising Temperature_Easy tag: SQL
- 基于Verilog的奇数偶数小数分频器设计