当前位置:网站首页>【SSL集训DAY2】有趣的数【数位DP】
【SSL集训DAY2】有趣的数【数位DP】
2022-08-09 22:35:00 【VL——MOESR】
思路:
c o d e code code
#include<iostream>
#include<cstring>
#include<cstdio>
#define ll long long
using namespace std;
ll n, ans, len;
ll f[21][163][163];
ll lim[20], a[20];
inline ll dfs(register ll x, register ll sum, register ll k, register ll r, register ll limit) {
if(x > len && sum == 0 && r == 0) {
f[x][sum][r] = 1;
return 1;
}
if(x > len) {
f[x][sum][r] = 0;
return 0;
}
if(!limit && f[x][sum][r] != -1) return f[x][sum][r];
register ll tmp = 0;
if(limit) {
for(register ll i = 0; i <= lim[x]; ++ i)
if(sum - i >= 0)
tmp += dfs(x + 1, sum - i, k, (r * 10 + i) % k, i == lim[x]);
}
else {
for(register ll i = 0; i <= 9; ++ i)
if(sum - i >= 0)
tmp += dfs(x + 1, sum - i, k, (r * 10 + i) % k, 0);
}
if(!limit) f[x][sum][r] = tmp;
return tmp;
}
int main() {
scanf("%lld", &n);
register ll m = n;
while(m != 0) {
++ len;
a[len] = m % 10;
m /= 10;
}
for(register ll i = 1; i <= len; ++ i) lim[i] = a[len - i + 1];
for(register ll i = 1; i <= len * 9; ++ i)
{
memset(f, -1, sizeof(f));
ans += dfs(1, i, i, 0, 1);
}
printf("%lld", ans);
return 0;
}
边栏推荐
猜你喜欢
随机推荐
外包的水有多深?腾讯15k的外包测试岗能去吗?
2022牛客暑期多校训练营6(ABGIJM)
matplotlib散点图自定义坐标轴(文字坐标轴)
Gartner全球集成系统市场数据追踪,超融合市场增速第一
领跑政务云,连续五年中国第一
[Cloud Native] This article explains how to add Tencent Crane to Kubevela addon
全球不用交税的国家,为什么不交
恭喜获奖得主 | 互动有礼获赠 Navicat Premium
torch.distributed多卡/多GPU/分布式DPP(二)——torch.distributed.all_reduce(reduce_mean)&barrier&控制进程执行顺序&随机数种子
金仓数据库 KingbaseGIS 使用手册(6.4. 几何对象存取函数)
经济衰退即将来临前CIO控制成本的七种方法
集群的基础形式
用函数统计最长单词的字母数量
【哲理】读书的意义
【面试高频题】可逐步优化的链表高频题
金仓数据库 KingbaseGIS 使用手册(6.3. 几何对象创建函数)
complete knapsack theory
How to match garbled characters regularly?
【云原生】一文讲透Kubevela addon如何添加腾讯Crane
Filament - Material basic graphics drawing