BZOJ 1799 self 同类分布(数位dp,区间各位数字和能整除原数的数字个数)

原创 2016年08月31日 00:16:22

题目链接:
BZOJ 1799 self 同类分布
题意:
给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数。
数据范围:ab1018
分析:
暴力枚举所有可能的数字和即可。
需要判断余数等于0并且所有数字和等于设定的sum。

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
typedef long long ll;

int digit[20];
ll dp[20][200][200];

ll dfs(int pos, int rem, int pre, int sum, int limit)
{
    if (pos == -1) return rem == 0 && pre == sum;
    if (!limit && dp[pos][rem][pre] != -1) return dp[pos][rem][pre];
    if (pre > sum) return 0;
    int last = limit ? digit[pos] : 9;
    ll ret = 0;
    for (int i = 0; i <= last; ++i) {
        ret += dfs(pos - 1, (rem * 10 + i) % sum, pre + i, sum, limit && (i == last));
    } 
    if (!limit) dp[pos][rem][pre] = ret;
    return ret; 
}

ll solve(ll x)
{
    int len = 0;
    memset(digit, 0, sizeof(digit));
    while (x) {
        digit[len++] = x % 10;
        x /= 10;
    }
    ll ret = 0;
    for (int i = 1; i <= 9 * len; ++i) {
        memset(dp, -1, sizeof(dp));
        ret += dfs(len - 1, 0, 0, i, 1);
    }
    return ret;
}   

int main()
{
    ll n, m;
    while (~scanf("%lld%lld", &n, &m)) {
        printf("%lld\n", solve(m) - solve(n - 1));
    }
    return 0;
}
版权声明:缥缈玉京人,想语然、京兆眉妩。

self 同类分布 (数位dp)

给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数。Sample Input 10 19 Sample Output 3 Hint 【约束条件】1 ≤ a ≤ b ≤ 10^18...

ORA-12560解决方法

ORA-12560解决方法今天在进行oracle数据imp/exp时突然发现在cmd下执行exp输入scott/tiger后时提示:EXP-00056: 遇到 ORACLE 错误 12560ORA-1...

【数位DP】【bzoj 1799】: [Ahoi2009]self 同类分布

http://www.lydsy.com/JudgeOnline/problem.php?id=1799 于是光荣 这题。。。。 因为只有一个问,我乱搞压了下内存,过了 不知...

bzoj 1799: [Ahoi2009]self 同类分布 题解

【原题】 1799: [Ahoi2009]self 同类分布 Time Limit: 50 Sec  Memory Limit: 64 MB Submit: 554  Solved: 1...

Codeforces 55D Beautiful Numbers(数位dp,能被自己各个位上数字整除的数字个数)

题目链接: Codeforces 55D Beautiful Numbers 题意: 定义:一个数如果能够被它所有位上非零数字整除那么这个数就是Beautiful Numbers。 给一个区间...
  • Ramay7
  • Ramay7
  • 2016年08月29日 18:48
  • 197

[bzoj1799]同类分布 [bzoj4521]手机号码

1799: [Ahoi2009]self 同类分布Time Limit: 50 Sec Memory Limit: 64 MB Submit: 824 Solved: 325 [Submit]...

bzoj 3780: 数字统计 (数位dp)

3780: 数字统计 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 50  Solved: 27 [Submit][Status][Discu...

【bzoj3679】 数字之积 数位dp

裸的数位dp,豪爷讲课的时候秒掉了,但是后来发现会MLE,于是我们做这么一件事,考虑数字的乘积一定是2、3、5、7的多少次幂之积,于是我们对于一个n,把可行的数字拿出来排个序编个号就好了,表示不会用新...

[省选前题目整理][BZOJ 1833][ZJOI 2010]count 数字计数(数位DP)

题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1833思路http://blog.csdn.net/qpswwww/article/detai...
  • qpswwww
  • qpswwww
  • 2015年04月01日 16:50
  • 441

BZOJ 3679 数字之积 - 数位dp

题目描述分析(From Claris):考虑计算[1;R)内满足条件的数的个数。 数字之积非常大,但是这些数字的质因子只可能是2、3、5、7。 所以设f(i;cnt2;cnt3;cnt5;cnt7...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BZOJ 1799 self 同类分布(数位dp,区间各位数字和能整除原数的数字个数)
举报原因:
原因补充:

(最多只允许输入30个字)