数位dp-R
来源:互联网 发布:exe软件看源码 编辑:程序博客网 时间:2024/06/06 17:48
10 19
3
思路:
因为给出的数据最大为18位,那么各位之和不会超过18*9=162,我们申请170的数组就行
申请一个dp[30][170][170][2]分别代表 位数,当前数的和,我们要取得模,是否有边界限制
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
long long a[30];
long long dp[30][170][170][2];
long long dfs(int pos,int sum,int flag,int mod,bool limit)
{
if(pos==0)return sum==0&&flag==0; //sum为0说明存在这个各位和,flag为0说明取模为0
if(dp[pos][sum][flag][limit]!=-1)return dp[pos][sum][flag][limit];
long long lll=0;
int shang=limit?a[pos]:9;
for(int i=0;i<=shang;i++)
{
if(sum-i<0)
break;
lll+=dfs(pos-1,sum-i,(flag*10+i)%mod,mod,limit&&i==a[pos]);
}
dp[pos][sum][flag][limit]=lll;
return lll;
}
long long slove(long long x)
{
int pos=0;
while(x)
{
a[++pos]=x%10;
x/=10;
}
long long ans=0;
for(int i=1;i<=pos*9;i++)
{
memset(dp,-1,sizeof(dp));
ans+=dfs(pos,i,0,i,1);
}
return ans;
}
int main()
{
long long l,f;
while(cin>>l>>f)
{
cout<<slove(f)-slove(l-1)<<endl;
}
}
- 数位dp-R
- 数位dp
- 数位DP
- 数位DP
- 数位dp
- 数位dp
- 数位dp
- 数位DP
- 数位dp
- 数位DP
- 【数位DP】
- 数位DP
- 数位dp
- 数位dp
- 数位DP
- 数位DP
- 数位dp
- 数位DP
- 报错:不能找到系统文件properties
- <学习html>第六天笔记-表单标签(input控件、label标签)
- Spring框架详解(1)
- 210串口控制台-210移植printf不好使
- HDU 1166 敌兵布阵
- 数位dp-R
- C++集锦四 MyString类
- BP神经网络
- 在liunx编译C语言程序出现Undefined reference to pthread_create in Linux 错误*
- web性能调优法则笔记
- HDU
- 第四周项目五C/C++ 数据结构之猴子选大王
- Android HIDL 官方文档(七,END)—— 网络堆栈配置工具(Network Stack Configuration Tools)
- 利用Tensorflow构建自己的图片数据集TFrecords