hdu 4722 Good Numbers(找规律,记忆化搜索,数位dp)

用友U8库龄分析避坑指南:物料出入库日期计算的5个常见错误 本文深入剖析了在用友U8系统中进行库龄分析时,物料出入库日期计算的五个常见陷阱。从数据源选择、业务类型过滤、计价方式逻辑、期初数据处理到查询性能优化,逐一解析错误根源并提供避坑指南,帮助企业获得准确的库龄数据,有效管理库存与资金风险。 阅读详情

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=4722

解题思路:

题目大意:

给你两个数a,b(a<=b),问你a~b满足各个数位相加能整除10的个数,含边界。

算法思想:

先枚举一下0~200内满足条件的值,0,19,28,37,46,55,64,73,82,91,109,118,127,136,145,154,163,172,181,190.规律很显然就出来了,0~10中有一个,10~20中有一个。。。可知:每十个中必有一个(自己可以在纸上画一下)。一个很大的数共有n位,前面n-1位的和是p而最后一位还没确定,最后一位可以取q=0~9,自己可以想一下结果肯定是(p+q)%10,而模上10以后的结果必是从0~9,所以每十个里面必有一个。接下来的就好办了,问你a~b满足条件的个数,就先求出边界c~d(c<=a且最大的满足条件的数,d<=b且最大的满足条件的数),最后结果就是(d-c)/10。

AC代码(找规律);

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

typedef long long ll;

bool judge(ll x){
    int sum = 0;
    while(x){
        sum += x%10;
        x /= 10;
    }
    if(sum % 10 == 0)
        return true;
    else
        return false;
}

int main(){
    int T,t = 1;
    scanf("%d",&T);
    while(T--){
        ll a,b;
        scanf("%lld%lld",&a,&b);
        a--;
        while(!judge(a))
            a--;
        while(!judge(b))
            b--;
        printf("Case #%d: %lld\n",t++,b/10-a/10);
    }
    return 0;
}

AC代码(记忆化搜索):

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

typedef long long ll;
const int maxn = 25;

ll dp[maxn][12];
ll digit[maxn];
ll a,b;

ll dfs(int pos,int pre,bool limit){//pre表示前面各位数字之和对该数取模的结果 
    if(pos == -1)
        return pre == 0;
    if(!limit && dp[pos][pre]!=-1)
        return dp[pos][pre];

    ll res = 0,tmp = limit?digit[pos]:9;

    for(int i = 0; i <= tmp; i++){
        int new_pre = (pre+i)%10;
        res += dfs(pos-1,new_pre,limit&&i==tmp);
    }
    if(!limit)
        dp[pos][pre] = res;
     return res;
}

ll solve(ll n)
{
     int len=0;
     while(n){
         digit[len++] = n%10;
         n /= 10;
     }
     return dfs(len-1,0,true);
}

int main(){
     int T;
     scanf("%d",&T);
     for(int i = 1; i <= T; i++){
         memset(dp,-1,sizeof(dp));
         scanf("%lld%lld",&a,&b);
         printf("Case #%d: %lld\n",i,solve(b)-solve(a-1));
     }
     return 0;
}


dp[i][j]表示到第i位,数字和%10为j,然后进行dp,注意完全匹配的情况是要+1,而其他情况是从0 到 9 都要考虑
AC代码(数位dp):

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

typedef long long ll;
ll a,b,dp[20][10];
ll v[20],vn;

void solve2(ll num){
    vn = 0;
    while(num){
        v[++vn] = num % 10;
        num /= 10;
    }
    for(int i = 1; i <= vn / 2; i++)
        swap(v[i], v[vn - i + 1]);
}

ll solve(ll num){
    if (num == -1)
    return 0;
    memset(dp, 0, sizeof(dp));
    solve2(num);
    int x = 0;
    for (int i = 1; i <= vn; i++){
        for (int j = 0; j < 10; j++){
            for (int k = 0; k < 10; k++){
                dp[i][(j + k) % 10] += dp[i - 1][j];
            }
        }
        for (int j = 0; j < v[i]; j++) {
            dp[i][(x + j) % 10]++;
        }
        x = (x + v[i]) % 10;
    }
    if (!x)
        dp[vn][0]++;
    return
        dp[vn][0];
}

int main(){
    int T,t = 1;
    scanf("%d", &T);
    while(T--){
        scanf("%lld%lld",&a,&b);
        printf("Case #%d: %lld\n",t++,solve(b)-solve(a-1));
    }
    return 0;
}


X猫免费小说安卓逆向分析 七猫免费小说安卓逆向分析 难度(♥♥) 文章目录七猫免费小说安卓逆向分析 难度(♥♥)1. 查壳2. 抓包分析3. sign1. Frida-rpc2. Native函数分析快3点了. 睡觉~ 白天再继续写! 1. 查壳 我这边使用的是ApkTool, 拖进去显示未加壳。 2. 抓包分析 POST https://xiaoshuo.wtzw.com/api/v1/login/index HTTP/1.1 net-env: 1 channel: qm-cbcpa056_wm is-white: 0 platf 阅读详情

相关推荐

Docker 安装 CentOS7

本文主要介绍了docker 下安装centos7。访问 CentOS 镜像库地址:https://hub.docker.com/_/centos?tab=tags&page=1。可以通过 Sort by 查看其他版本的 CentOS 。默认是最新版本 centos:latest 。 使用以下命令来查看是否已安装了 centos7: 启动centos容器,并把docker上centos的22端口映射到本机60001端口(端口号可以自己指定) 3、进入到Centos容器 4.安装ssh服务和网络必须软件

折腾java的博客 1万+

[找规律 递归子问题 || 数位DP] BZOJ 4513 [Sdoi2016]储能表

看不懂数位DP,蒟蒻就是蒟蒻:http://fancypei.github.io/2016/04/16/SDOI2016%20Round1/ 然后ZZY Google到了一个神奇的做法,很happy:https://blog.menci.moe/sdoi2016-table/ 强力膜拜 考虑异或的性质: 性质一:对于任意 x 性质二:对于任意 x≠yx≠y,必

雯舞 1443

FAST-LIO 实战:从 LI-Init 标定到 YAML 配置全解析

本文详细解析了FAST-LIO算法中LI-Init标定的关键步骤与YAML配置优化技巧。从激光雷达与IMU的时空标定原理到实战参数调优,提供了一套完整的解决方案,帮助开发者解决点云畸变、建图漂移等常见问题,提升SLAM系统在动态环境中的稳定性和精度。

weixin_42651281的博客 325

hdu 1271 整数对(找规律)

Problem Description Gardon和小希玩了一个游戏,Gardon随便想了一个数A(首位不能为0),把它去掉一个数字以后得到另外一个数B,他把A和B的和N告诉了小希,让小希猜想他原来想的数字。不过为了公平起见,如果小希回答的数虽然不是A,但同样能达到那个条件(去掉其中的一个数字得到B,A和B之和是N),一样算小希胜利。而且小希如果能答出多个符合条件的数字,就可以得到额外的糖果。

HJ 904

landsat8数据下载教程

下载landsat数据教程

weixin_44001203的博客 1万+

瑞芯微RK3568开发板实战:Android11系统parameter.txt文件配置全解析(附常见问题排查)

本文深入解析了瑞芯微RK3568开发板在Android 11系统下parameter.txt文件的配置要点与实战技巧。作为BootLoader启动阶段的核心蓝图,该文件决定了硬件初始化、分区布局及电源管理。文章详细拆解了身份标识、GPIO控制(PWR_HLD)、命令行参数及分区表等关键字段的配置逻辑,并针对RK3568平台与Android 11特性提供了专项适配策略,最后附带了启动失败、分区异常等常见问题的深度排查方法。

php55的博客 895

HDU 6048 思维+找规律

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6048 给出一个n*m的方格,以及1到n*m-1的数字,一开始按照一定的规则选择每个数,从上到下,从左到右填入方格中,最后留一个空格子。 选数的规则为,每次选择剩余数中,第1个,第p+1个,第p*2+1个…,选完一轮后,去除选择的数,剩下的数继续按照这个规则来选。 如果方格中的空格子可以通过和

Bahuia的博客 1124

uniapp - 实现苹果App打包上架App Store应用商店详细教程,详解Hbuilder打包编译ipa发布上传到苹果ios软件商店全流程,提供云打包/离线本地打包ios、申请IOS苹果证书方法

uni-app,苹果ios,苹果app,打包编译,appstore应用商店,ipa发布到软件商店,uniapp的app苹果应用商店上架,上架苹果APPStore,uniApp打包的ipa文件上传到商店,上架苹果商城,审核失败,被拒绝,UniApp打包ipa文件,上架iOSAppStore流程指南,最新详细教程最全,Hbuilder打包发布iosapp,苹果云打包上线全过程,云打包IPA并上传到商店,打包iOSipa文件后怎么发布到应用商店,苹果证书申请教程,ios证书申请,mac电脑,审核很久

🏆 前端领域优质创作者 1万+

HDU 4722 Good Numbers(找规律+数位DP)

Good Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 610    Accepted Submission(s): 225 Problem Description If we sum up every

公众号:ByteCode 1439

【YOLOv10改进[Backbone]】使用ADNet改进YOLOv10在噪声干扰下的目标检测效果(图像去噪)+ 含全部代码和详细修改方式 + 手撕结构图 + 全网首发

使用ADNet改进YOLOv10在噪声干扰下的目标检测效果(图像去噪)+ 含全部代码和详细修改方式 + 手撕结构图 + 全网首发 + 遥遥领先

静谧、淡雅 2857

【项目实战】DevOps制品管理之JFrog Artifactory介绍

JFrog Artifactory是一款领先的二进制软件制品仓库管理工具,由JFrog公司开发。

奶爸的编程之路,也就一周冷个三天 1352

HDU 4662 MU Puzzle(找规律)

题意:问是否能把MI通过以下规则转换成给定的字符串s。 1.使M之后的任何字符串加倍(即,将Mx更改为Mxx)。 例如:MIU到MIUIU。2.用U替换任何III。例如:MUIIIU至MUUU。3.去掉任何UU。 例如:MUUU到MU。 分析: 1、MI的变换首先要复制I,可以复制为1,2,4,8,16,32,……(2的n次方)个。 2、由于可以用U替换任何III,所以将字符串s...

Cherrychan2014的博客 234

基于cnn version_transformer VIT模型的动物图像分类 完整代码+数据 动物分类教程

基于cnn version_transformer VIT模型的动物图像分类 完整代码+数据 动物分类教程

机器学习深度学习业余选手 1001

HDU4722 Good Numbers 数位DP

HDU4722 Good Numbers 数位DP

htrdchh的博客 219

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

HDU4722:Good Numbers(数位DP)

Problem Description If we sum up every digit of a number and the result can be exactly divided by 10, we say this number is a good number. You are required to count the number of good numbers in the

ACM!荣耀之路! 3610

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

HDU 4722 Good Numbers 数位dp或找规律枚举 数位dp感悟

数位dp感悟: 有一类与数位有关的区间统计问题。这类问题往往具有比较浓厚的数学味道,无法暴力求解,需要在数位上进行递推等操作 方法与 基本思想: 可以从高到低枚举第一次 ¨需要统计区间[l,r]的满足题意的数的个数,这往往可以转换成求[0,r]-[0,l) ¨对于求区间[0,n)有一个通用的方法。 ¨对于一个小于n的数,肯定是从高位到低位出现某一位 ¨预处理f数组。

became_a_wolf的专栏 420

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

hdu 4722 Good Numbers

下午满课,没推完就直接上课去了,晚上直接推敲了下,感觉确实挺简单的。  有人用数位dp做的,这种题的通解可以用数位dp的,但是这题比较特殊,可以直接推倒出结果来,考虑到每一位的时候。 solve算出的是0到a中满足条件的数的个数。 先想清楚一点: 0 ~ 99...999 如果这个都推不出来我就无语了。 例如9438298   第一位为9  则当它为8~0时,他的下面部分是完全的,所以可以

purevegetable 945

HDU - 4722 Good Numbers 【找规律 or 数位dp模板】

If we sum up every digit of a number and the result can be exactly divided by 10, we say this number is a good number. You are required to count the number of good numbers in the range from A to B, i...

weixin_30758821的博客 130

HDU4722-Good Numbers

Good Numbers                                                                                Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

wang_128的博客 362

hdu 4722 Good Numbers(找规律)

Good Numbers Problem Description If we sum up every digit of a number and the result can be exactly divided by 10, we say this number is a good number. You are required to count the numbe

Darkarts 792

HDU 4722 Good Numbers 2013年四川省赛题

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 题目大意:给定一个区间,求区间中有多少个满足每位上的数的和是10的倍数。 解题思路:先打表暴力求出前200项符合条件的个数,然后再找规律。 0~9 0 1个 10~19 9 1个 20~-29 18 1个 0~100 10个 0~20...

weixin_30736301的博客 110

hdu 4722 Good Numbers 规律 数位dp

#include<iostream> #include<cstring> #include<cstdio> #include<vector> #include<queue> using namespace std; #define ll long long #define maxn 100050 int ok(ll n...

weixin_34345560的博客 129

hdu4722Good Numbers(dp)

链接 这题规律其实挺明显的 打表找规律估计都可以 正规点就是DP 算出第N位所包含的good number的数量 如果给出的数是N+1位 就枚举各位上比原来小的数 加上下一位的dp值 一个i写成g了 纠结了半天。 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> ...

weixin_30725315的博客 87

HDU4722Good Numbers热身赛2 1007题(思维题 不用数位dp照样可以做的)

Good Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 268    Accepted Submission(s): 90 Problem Description If we sum up eve

布生气 1664

HDU 4722 Good Numbers

If we sum up every digit of a number and the result can be exactly divided by 10, we say this number is a good number.  You are required to count the number of good numbers in the range from A to B,

Occult 360

HDU4722——Good Numbers——2013 ACM/ICPC Asia Regional Online —— Warmup2

今天比赛做得一个数位dp。 首先声明这个题目在数位dp中间绝对是赤裸裸的水题。毫无技巧可言。 题目的意思是个你a和b,要求出在a和b中间有多少个数满足数位上各个数字的和为10的倍数。 显然定义一个二维数组f,f[i][j]表示i位任意的数组合所有数位对10取模后余数为j的种类。 这样直接枚举1-10就可以得出i和i+1的递推关系了呢。简单了吧。 在求答案的时候不是直接求的,用的...

weixin_30718391的博客 119
上一篇: BestCoder Round #54 (div.2)(hdu5427,hdu5428,hdu5429,hdu5430)
下一篇: hdu 4737 A Bit Fun(TwoPointer)
yphacker
博客等级 码龄12年 199粉丝 540原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值