hdu4249 A Famous Equation

产业园区运营负责人如何实现创新资源的系统化配置?.docx 产业园区运营负责人如何实现创新资源的系统化配置? 立即下载

A Famous Equation

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 38    Accepted Submission(s): 18


Problem Description
Mr. B writes an addition equation such as 123+321=444 on the blackboard after class. Mr. G removes some of the digits and makes it look like “1?3+??1=44?”. Here “?” denotes removed digits. After Mr. B realizes some digits are missing, he wants to recover them. Unfortunately, there may be more than one way to complete the equation. For example “1?3+??1=44?” can be completed to “123+321=444” , “143+301=444” and many other possible solutions. Your job is to determine the number of different possible solutions.
 

Input
Each test case describes a single line with an equation like a+b=c which contains exactly one plus sign “+” and one equal sign “=” with some question mark “?” represent missing digits. You may assume a, b and c are non-negative integers, and the length of each number is no more than 9. In the other words, the equation will contain three integers less than 1,000,000,000.
 

Output
For each test case, display a single line with its case number and the number of possible solutions to recover the equation.
 

Sample Input
  
7+1?=1? ?1+?1=22
 

Sample Output
  
Case 1: 3 Case 2: 1
Hint
There are three solutions for the first case: 7+10=17, 7+11=18, 7+12=19 There is only one solution for the second case: 11+11=22 Note that 01+21=22 is not a valid solution because extra leading zeros are not allowed.
 

Source
 

呃,动态规划题。

模拟高精度加法,从低位扫到高位。

dp[i][0]表示前i位满足条件且没进位的方法数,dp[i][1]表示前i位满足条件且进1的方法数。

暴力枚举每一位的数字,然后往前递推即可。

代码很难看,还是勉为其难的贴一下吧……orz,主要是前导0那部分处理的太搓了……


#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;

char str[105];
int a[15];
int b[15];
int c[15];
long long dp[10][2];

int main()
{
    int i,j,n,tag,t,aup,bup,cup,cnt=1,x,y,z,p,q,r;
    while(scanf("%s",str)!=EOF)
    {
        memset(dp,0,sizeof(dp));
        n=strlen(str);
        tag=0;
        aup=bup=cup=0;
        for (i=n-1;i>=0;i--)
        {
            if (str[i]=='=' || str[i]=='+') tag++;
            else
            {
                t=str[i]=='?'?-1:(str[i]-'0');
                if (tag==0) c[cup++]=t;
                if (tag==1) b[bup++]=t;
                if (tag==2) a[aup++]=t;
            }
        }
        if (cup<max(aup,bup))
        {
            printf("Case %d: 0\n",cnt++);
            continue;
        }
        for (i=aup;i<=cup;i++)
        {
            a[i]=0;
        }
        for (i=bup;i<=cup;i++)
        {
            b[i]=0;
        }
        for (i=0;i<cup;i++)
        {
            for (x=0;x<=9;x++)
            {
                if (i==aup-1 && aup!=1 && x==0 && a[i]==-1) continue;
                if (a[i]!=-1 && x>=1) continue;
                for (y=0;y<=9;y++)
                {
                    if (i==bup-1 && bup!=1 && y==0 && b[i]==-1) continue;
                    if (b[i]!=-1 && y>=1) continue;
                    for (z=0;z<=9;z++)
                    {
                        if (i==cup-1 && cup!=1 && z==0 && c[i]==-1) continue;
                        if (c[i]!=-1 && z>=1) continue;
                        p=a[i]==-1?x:a[i];
                        q=b[i]==-1?y:b[i];
                        r=c[i]==-1?z:c[i];
                        if (p+q==r)
                        {
                            if (i==0) dp[i][0]++;
                            else dp[i][0]+=dp[i-1][0];
                        }
                        if (p+q==10+r)
                        {
                            if (i==0) dp[i][1]++;
                            else dp[i][1]+=dp[i-1][0];
                        }
                        if (p+q+1==r && i!=0)
                        {
                            dp[i][0]+=dp[i-1][1];
                        }
                        if (p+q+1==r+10 && i!=0)
                        {
                            dp[i][1]+=dp[i-1][1];
                        }
                    }
                }
            }
         }
        printf("Case %d: %I64d\n",cnt++,dp[cup-1][0]);
    }
    return 0;
}




高校技术转移办公室人员需要哪些材料完成成果转化项目审核?.docx 高校技术转移办公室人员需要哪些材料完成成果转化项目审核? 立即下载

相关推荐

状态估计【扩展卡尔曼滤波算法的神经网络训练】BP神经网络、扩展卡尔曼滤波EKF+BP、粒子滤波PF轨迹估计研究(Matlab代码实现)

【状态估计】【扩展卡尔曼滤波算法的神经网络训练】BP神经网络、扩展卡尔曼滤波EKF+BP、粒子滤波PF轨迹估计研究(Matlab代码实现)内容概要:本文主要介绍了基于变频控制的多相交错LLC谐振变换器闭环仿真研究,重点探讨了多相交错并联技术在降低输出电流纹波和提升功率容量方面的优势,分析了交错角对纹波抵消的影响以及均流问题的成因。针对变频控制带来的非线性特性,文章采用扩展描述函数(EDF)建立小信号模型,用于指导PID控制器的设计,并验证其在稳态和动态工况下的控制性能。通过Simulink仿真平台对闭环系统进行建模与测试,考察了启动过程、负载阶跃响应及频率调节的平滑性,结果表明所设计的控制系统具有良好的稳态精度和动态响应能力。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生及从事电源系统研发的工程技术人员。; 使用场景及目标:①掌握多相交错LLC谐振变换器的工作原理与建模方法;②学习变频控制下非线性系统的建模与PID环路设计技巧;③应用于高效率、低纹波开关电源的仿真设计与优化。; 阅读建议:建议结合文中提供的仿真模型与参数设置进行实践操作,重点关注EDF建模过程与控制器参数整定方法,通过对比不同交错角下的仿真结果加深对纹波抑制机理的理解。

hdu 4249 A Famous Equation【DP】【Fudan Local Programming Contest 2012 E】

题目大意: 给一个a+b=c的表达式,但是a、b、c中部分位的数字丢失,并用?代替,问有多少种方案使得这个表达式成立。 这个应该也属于动态规划的思想。其实思路还是比较较简单的。 当低位进的数,和向高位进的数确定了,那么使得本位的等式成立的状态最多可以用10^3的时间复杂度确定。有了这个子状态,问题就好解决了。 代码写的比较挫,贴别是枚举的时候,特别的繁琐。 注意不能有前导0,但是只有一位

水帘洞天 1485

论文复现基于物理信息神经网络预测2D3D非稳态温度场及热源(Python代码实现)

内容概要:本文详细介绍了基于物理信息神经网络(PINN)预测2D和3D非稳态温度场及热源的Python代码实现,旨在复现相关科研论文。该方法将物理定律嵌入神经网络结构中,利用偏微分方程描述传热过程,在无需大量标注数据的前提下,求解复杂的非稳态传热问题,实现对温度场时空演化和内部热源分布的高精度预测。文中系统阐述了PINN的模型构建原理、损失函数设计策略(包含初始条件、边界条件与控制方程的物理约束)、网络训练流程以及数值实验结果,充分展示了其在科学计算与工程仿真中的强大潜力与良好泛化能力。; 适合人群:具备一定Python编程基础和深度学习理论知识,熟悉偏微分方程与传热学基本概念,对科学计算、物理信息建模、智能仿真等方向感兴趣的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于复现并深入理解PINN在非稳态热传导问题中的具体应用;②为从事热管理、材料科学、能源系统、航空航天等领域的研究人员提供可扩展、可定制的开源代码框架;③辅助高校教学与科研实践,帮助学生掌握物理信息驱动的机器学习建模方法及其在实际工程问题中的实现路径。; 阅读建议:建议读者结合文中提供的完整代码与详细注释,使用主流深度学习框架(如TensorFlow或PyTorch)进行动手实践,重点理解物理约束如何通过损失项融入网络训练过程,并尝试在不同几何构型、边界条件或热源形式下进行模型验证,以深入掌握PINN的设计思想与泛化机制。

HDU 4249(数位dp)

本题目,一些位置给了一个 a+b=c的表达式,其中a,b,c的一些位用?表示。问有多少种填数方式,让表达式成立。 首先,要说明的是状态表示d[ i ][ j ][ k ][ p ]表示三个数的p位置为i , j ,k,  则可能有两种情况(i+j)%10==k   | |   ( i+j+1)%10==k,因为只有这两种情况下的状态才具有意义。 那么转移,也就很清楚了,第一种情况不依赖进位,而

playwfun的专栏 532

从零到一:TI AWR1843 Boost EVM与DCA1000 EVM的ADC数据采集实战指南

本文详细介绍了TI AWR1843 Boost EVM与DCA1000 EVM的ADC数据采集实战指南,涵盖硬件连接、软件配置、固件烧录、雷达参数设置及数据处理等关键步骤。通过MATLAB等工具,开发者可高效实现毫米波雷达数据采集,适用于自动驾驶、工业检测等领域。

weixin_29001327的博客 967

别再被SpringerLink虐了!手把手教你搞定LaTeX源文件提交(附正确文件顺序和类型选择)

本文详细解析了SpringerLink投稿系统中LaTeX源文件提交的常见问题与解决方案,包括文件打包、类型选择和顺序排列等关键步骤。通过实战经验,帮助科研人员避开隐形陷阱,一次性完成LaTeX提交,提升投稿效率。特别针对`.bst`和`.cls`文件的正确处理提供了专业指导。

weixin_42522964的博客 445

HDU:4249 A Famous Equation(数位DP)

题意:给一个表达式形如a+b=c,其中一些数字为?,问使表达式成立有多少种情况。 思路:不太容易发现是一道数位DP。比较容易建立状态转移方程,dp[i][j][k][l]表示j(0表示不进位,1表示进位)使a的第i位为k,b的第i位为l的情况个数,这样可以计算得c的第i位。用线性时间枚举位数,10^2枚举过去状态,10^2枚举现在状态建立转移即可。最后累加求和。注意前导零的问题。给一组数据??+

Fighting 707

解决fetch_california_housing数据集403错误的三种实用方法

本文针对机器学习初学者加载fetch_california_housing数据集时常见的HTTPError 403: Forbidden错误,提供了三种经过实测的解决方案。详细介绍了手动下载与本地替换、修改源码下载路径以及配置网络访问策略的具体步骤,帮助用户根据自身网络环境和开发场景选择最佳方法,确保数据集顺利加载。

weixin_29074295的博客 550

HDU-4249-A Famous Equation(DP)

Problem Description Mr. B writes an addition equation such as 123+321=444 on the blackboard after class. Mr. G removes some of the digits and makes it look like “1?3+??1=44?”. Here “?” denotes remo

青春无悔 1482

46.qt quick-自定义非常好看的qml虚拟软键盘-支持换肤、动态加载移除语言(二)

在上章我们学习了45.qt quick-qml虚拟软键盘详解(一)_诺谦的博客-优快云博客 接下来我们便来自定义一款好看的qml软键盘.如下图所示: 支持背景更换、支持动图: 支持动态加载移除语言: 支持拖拽、自由缩小放大: 支持定位坐标: ...

抵抗时间扭曲,坚持做一件有意义的事 4674

YOLO26涨点改进 | 全网独家创新、检测头Head改进篇 | AAAI 2026 | 使用StripConvHead改进YOLO26的检测头,处理小目标、遮挡小目标检测有效涨点,助力高效发论文

🔥本文给大家介绍使用StripConv条形卷积改进 YOLO26的检测头,可以显著提高模型在高纵横比物体检测、目标定位和多尺度物体检测方面的表现。StripConv条形卷积能够更有效地捕捉细长物体的特征,提升定位精度,并通过简化卷积核设计减少计算冗余,优化计算效率。此外,该改进增强了 YOLO26对复杂场景和实时任务的适应能力,特别适用于遥感图像目标检测、小目标检测等领域。具体怎么使用请看全文。摘要:随着遥感物体检测的快速发展,检测高纵横比物体仍然是一个挑战性问题。

Ai缝合怪、助力小伙伴高效发论文 269

HDOJ 4249 A Famous Equation DP

DP: DP[len][k][i][j] 再第len位,第一个数len位为i,第二个数len位为j,和的第len位为k 每一位可以从后面一位转移过来,可以进位也可以不进位 A Famous Equation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot

码代码的猿猿 1146

运维系列【仅供参考】:微信版本过低 使用CheatEngine绕过

微信版本过低 使用CheatEngine绕过

weixin_54626591的博客 2137

HDU 4249 A Famous Equation(数位DP)

题目链接:点击打开链接 思路:用d[i][a][b][c][is]表示当前到了第i位, 三个数的i位分别是a,b,c, 是否有进位 , 的方法数。 细节参见代码: #include #include #include #include #include #include #include #include #include #include #include #include #includ

AC_Arthur的专栏 1349

matlab 点云泊松盘采样

本文介绍了泊松盘采样算法在三维点云处理中的应用。该算法通过最小间距约束(任意两点距离≥r)和均匀分布特性,生成高质量、均匀分布的点集。文章详细阐述了参数设置(如采样半径、候选点数),并与体素栅格、随机采样等方法进行了对比。代码实现部分展示了MATLAB版本的泊松盘采样算法,包括KD树加速和候选点生成机制。实验结果表明,该方法能有效保持点云特征,适用于点云简化、曲面重建等场景。文中还提供了参数调整建议和不同应用场景下的使用指导。

点云侠的博客 537

ABAP CDS View 从入门到精通教程目录:ABAP CDS View 在 SAP 技术体系中的重要地位

学习 ABAP CDS View 的开发技术,体会其背后的设计理念,也就掌握了 SAP S/4HANA 底层数据模型的设计精髓。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4783

【DP】 hdu4249 A Famous Equation

A Famous Equation http://acm.hdu.edu.cn/showproblem.php?pid=4249 Problem Description Mr. B writes an addition equation such as 123+321=444 on the blackboard after class. Mr. G removes som

Ted's 游乐园 846

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

hdu 4249 A Famous Equation (dp 细节)

A Famous Equation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 514    Accepted Submission(s): 153 Problem Description Mr. B wr

To be what you what to be! 1012

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

dp/模拟(石油大学组队赛 A Famous Equation / HDU-4249)

题目链接 题意: 给你一个等式,里面只有一个+号和一个=号,有些数位被隐藏为?号,不允许前导零。问:有有多少种方案让等式成立。 题解: 一个模拟加+dp,我们记dp[i][2]为三个数考虑到第i位,这一位有没有进1的方案数。按照三个数的情况分类讨论。我们可以对每一位?的最小取值打个标记,即如果?号在一个数的开头,那么它只能最小取1,而不可以取0,否则就可以取到0。因为时间充足,我们可以枚举三个数每一位的取值情况(其实可以O(1)O(1)O(1)进行状态转移)。最后时间复杂度为O(d∗93)O(d*9^3)O

平凡人Kalzn的博客 259

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

HDU 4294 A Famous Equation(DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4249 题目大意:给一个a+b=c的表达式,但是a、b、c中部分位的数字丢失,并用?代替,问有多少种方案使得这个表达式成立。 Sample Input 7+1?=1? ?1+?1=22   Sample Output Case 1: 3 Case 2: 1   Hint ...

weixin_34233679的博客 138

HDU 4254 A Famous Game (概率&组合数学公式)

x

AC,∑ndless 2390

HDU 4254 A Famous Game

J - 1010 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4254 Description Mr. B and Mr. M like to play with balls. They have m

Dosth_Magic 1002

【Linux 命令实战(04):文件内容查看,掌握 cat、less、head、tail】

cat:快速查看文件内容。less:分页浏览文件,支持搜索。head:查看文件开头。tail:查看文件末尾,支持实时跟踪。其中,tail -f是我建议大家重点掌握的命令。在自动化测试工作中,很多时候我们不需要等整个任务结束才分析结果。通过实时跟踪日志,就可以观察程序执行过程,及时发现接口异常、数据库连接失败等问题。当然,本篇还只是文件内容查看的基础。后面我们会继续学习如何从大量日志中筛选关键词、统计错误数量、定位异常记录。

一些微不足道的见解、希望能帮助各位 205
上一篇: hdu4255 A Famous Grid
下一篇: poj3321 Apple Tree
magicnumber
博客等级 码龄18年 119粉丝 196原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值