CSU 1374 Restore Calculation 数位DP
题意:
给你三个数A, B, C(没有前导0),但是其中某些位不知道。 问A+B=C成立有多少种情况。
思路:
从最后一位往前推,枚举A, B的每一种情况,考虑进位和不进位两种情况。
代码:
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std; typedef long long ll; const ll MOD = (ll)1e9+;
const int MAXN = ; ll dp[MAXN][];
char str[][MAXN]; int main() {
#ifdef Phantom01
freopen("CSU1374.txt", "r", stdin);
#endif // Phantom01 while (scanf("%s", str[])!=EOF) {
if (''==str[][]&&'\0'==str[][]) return ;
scanf("%s%s", str[], str[]);
memset(dp, , sizeof(dp));
int len = strlen(str[]);
dp[len][] = ;
for (int l = len-; l > ; l--) //第l位
for (int p = ; p < ; p++) if (dp[l+][p]>) //进位
for (int i = ; i < ; i++) if ('?'==str[][l] || i==(str[][l]-'')) //a[l]
for (int j = ; j < ; j++) if ('?'==str[][l] || j==(str[][l]-'')) //b[l]
if ('?'==str[][l] || (i+j+p)%==(str[][l]-'')) {
ll &now = dp[l][(i+j+p)/];
now = (now+dp[l+][p])%MOD;
}
//最后一位不为0
for (int p = ; p < ; p++) if (dp[][p]>) //进位
for (int i = ; i < ; i++) if ('?'==str[][] || i==(str[][]-'')) //a[l]
for (int j = ; j < ; j++) if ('?'==str[][] || j==(str[][]-'')) //b[l]
if ('?'==str[][] || (i+j+p)%==(str[][]-'')) {
ll &now = dp[][(i+j+p)/];
now = (now+dp[][p])%MOD;
} printf("%lld\n", dp[][]);
}
}
CSU 1374
CSU 1374 Restore Calculation 数位DP的更多相关文章
- 【BZOJ1662】[Usaco2006 Nov]Round Numbers 圆环数 数位DP
[BZOJ1662][Usaco2006 Nov]Round Numbers 圆环数 Description 正如你所知,奶牛们没有手指以至于不能玩"石头剪刀布"来任意地决定例如谁 ...
- bzoj1026数位dp
基础的数位dp 但是ce了一发,(abs难道不是cmath里的吗?改成bits/stdc++.h就过了) #include <bits/stdc++.h> using namespace ...
- uva12063数位dp
辣鸡军训毁我青春!!! 因为在军训,导致很长时间都只能看书yy题目,而不能溜到机房鏼题 于是在猫大的帮助下我发现这道习题是数位dp 然后想起之前讲dp的时候一直在补作业所以没怎么写,然后就试了试 果然 ...
- HDU2089 不要62[数位DP]
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 数位DP GYM 100827 E Hill Number
题目链接 题意:判断小于n的数字中,数位从高到低成上升再下降的趋势的数字的个数 分析:简单的数位DP,保存前一位的数字,注意临界点的处理,都是套路. #include <bits/stdc++. ...
- 数位dp总结
由简单到稍微难点. 从网上搜了10到数位dp的题目,有几道还是很难想到的,前几道基本都是模板题,供入门用. 点开即可看题解. hdu3555 Bomb hdu3652 B-number hdu2089 ...
- 数位DP入门
HDU 2089 不要62 DESC: 问l, r范围内的没有4和相邻62的数有多少个. #include <stdio.h> #include <string.h> #inc ...
- 数位DP之奥义
恩是的没错数位DP的奥义就是一个简练的dfs模板 int dfs(int position, int condition, bool boundary) { ) return (condition ? ...
- 浅谈数位DP
在了解数位dp之前,先来看一个问题: 例1.求a~b中不包含49的数的个数. 0 < a.b < 2*10^9 注意到n的数据范围非常大,暴力求解是不可能的,考虑dp,如果直接记录下数字, ...
随机推荐
- JS循环 for while 全局/局部变量 短路
循环语句: For for循环的格式 for(var i = 0; i < 10; i ++){ } for循环的执行顺序: ① ② 若判断为 true 进④ 进③ 进②判断 ……循环 ...
- Android Fragment中调用getActivity为null的问题
在使用fragment的时候经常会遇到getActivity()为null的情况.比如我在一个异步网路请求的回调中调用了getActivity()就会出现空指针问题.之前解决这个问题,通常都是直 ...
- [转] CentOS 7 为firewalld添加开放端口及相关资料
转自http://www.cnblogs.com/hubing/p/6058932.html 1.运行.停止.禁用firewalld 启动:# systemctl start firewalld 查 ...
- 登录生成令牌token存于redis
package com.medic.rest.province.base.home; import java.util.HashMap;import java.util.List;import jav ...
- 性能测试中的TPS与HPS
性能测试中的TPS与HPS TPS(Transaction per second) 是估算应用系统性能的重要依据.其意义是应用系统每秒钟处理完成的交易数量.一般的,评价系统性能均以每秒钟完成的技术交易 ...
- root用户删除文件提示:Operation not permitted
root用户删除文件提示:Operation not permitted http://blog.csdn.net/evanbai/article/details/6187578
- 不安装Oracle客户端,用plsql连接远程Oracle数据库(绝对解决你的问题)
1,首先准备下载两个软件,一个是instantclient.zip,另一个是plsql安装包.但是得确定您的电脑是32位还是64位,我这边提供了32位和64位的供您下载: 百度网盘:https://p ...
- Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessException总结
最新项目中遇到了 Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.Proces ...
- Memcached 集群环境Java客户端
Memcached 集群环境Java客户端 学习了: http://blog.csdn.net/zhouzhiwengang/article/details/53154112 http://guazi ...
- GetKeyState(), GetAsyncKeystate(), GetKeyboardSlate()
GetKeyState.GetAsyncKeyState.GetKeyboardState函数的差别: 1.BOOL GetKeyboardState( PBYTE lpKeyState );获得全部 ...