poj 3340 Barbara Bennett's Wild Numbers(数位DP)

时间:2021-11-29 21:58:26
Barbara Bennett's Wild Numbers
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 3153   Accepted: 1143

Description

A wild number is a string containing digits and question marks (like 36?1?8). A number X matches a wild number W if they have the same length, and every non-question mark character in X is equal to the character in the same position in W (it means that you can replace a question mark with any digit). For example, 365198 matches the wild number 36?1?8, but 360199, 361028, or 36128 does not. Write a program that reads a wild number W and a number X from input, both of length n, and determines the number of n-digit numbers that match W and are greater than X.

Input

There are multiple test cases in the input. Each test case consists of two lines of the same length. The first line contains a wild number W, and the second line contains an integer number X. The length of input lines is between 1 and 10 characters. The last line of input contains a single character #.

Output

For each test case, write a single line containing the number of n-digit numbers matching W and greater than X (n is the length of W and X).

Sample Input

36?1?8
236428
8?3
910
?
5
#

Sample Output

100
0
4

Source

/*
回来的第一道题,几天不用脑子生锈了
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define N 20
using namespace std;
long long power(long long a,long long b)//类似于pow函数的一个功能,因为颇为太小了
{
long long ans=;
for(int i=;i<=b;i++)
ans*=;
return ans;
}
int main()
{
//freopen("in.txt","r",stdin);
char a[N],b[N];
while(scanf("%s",&a)!=EOF&&strcmp(a,"#")!=)
{
long long ans=;//计时器
int sum=,cur=;//计算问号的次数和枚举目前为止出现问号的次数
scanf("%s",&b);
for(int i=;a[i];i++)
if(a[i]=='?')
sum++;
for(int i=;a[i];i++)
{
if(a[i]!='?')
{
if(a[i]>b[i])
{
ans+=power(,sum-cur);
break;
}
else if(a[i]<b[i])
break;
}
else if(a[i]=='?')
{
cur++;
ans+=power(,sum-cur)*(-b[i]+'');
}
}
printf("%lld\n",ans);
}
return ;
}

poj 3340 Barbara Bennett's Wild Numbers(数位DP)的更多相关文章

  1. hdu 2410 Barbara Bennett&&num;39&semi;s Wild Numbers

    Problem - 2410 挺好玩的一道题目.这道题的意思是给出一个模糊值以及一个确定值,要求求出模糊值中大于确定值的个数有多少. 这题我是直接用dfs的方法搜索的,对于每一位如果之前位置的形成的数 ...

  2. 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers &lpar;数位DP&rpar;

    2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers (数位DP) 链接:https://ac.nowcoder.com/acm/contest/163/ ...

  3. poj 3252 Round Numbers&lpar;数位dp 处理前导零&rpar;

    Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, P ...

  4. POJ 3252 Round Numbers&lpar;数位dp&amp&semi;amp&semi;记忆化搜索&rpar;

    题目链接:[kuangbin带你飞]专题十五 数位DP E - Round Numbers 题意 给定区间.求转化为二进制后当中0比1多或相等的数字的个数. 思路 将数字转化为二进制进行数位dp,由于 ...

  5. poj 3252 Round Numbers 数位dp

    题目链接 找一个范围内二进制中0的个数大于等于1的个数的数的数量.基础的数位dp #include<bits/stdc++.h> using namespace std; #define ...

  6. &dollar;POJ&dollar;3252 &dollar;Round&bsol; Numbers&dollar; 数位&dollar;dp&dollar;

    正解:数位$dp$ 解题报告: 传送门$w$ 沉迷写博客,,,不想做题,,,$QAQ$口胡一时爽一直口胡一直爽$QAQ$ 先港下题目大意嗷$QwQ$大概就说,给定区间$[l,r]$,求区间内满足二进制 ...

  7. POJ3252 Round Numbers —— 数位DP

    题目链接:http://poj.org/problem?id=3252 Round Numbers Time Limit: 2000MS   Memory Limit: 65536K Total Su ...

  8. codeforces 55D - Beautiful numbers&lpar;数位DP&plus;离散化&rpar;

    D. Beautiful numbers time limit per test 4 seconds memory limit per test 256 megabytes input standar ...

  9. Codeforces Beta Round &num;51 D&period; Beautiful numbers 数位dp

    D. Beautiful numbers Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/55/p ...

随机推荐

  1. 导入 sun&period;net&period;TelnetInputStream&semi; 报错

    // 对于导入 sun.net.TelnetInputStream; 报错 是权限不足 myeclise 默认不是使用sun 下面的额工具类 也可以自己建立一个 TelnetInputStream 继 ...

  2. php json&lowbar;encode中文unicode问题

    php调用json_encode将中文字符串存入mysql后读取出来有问题,发现存进去的时候把'\'给去掉了.解决方法是调用json_encode时候后面加JSON_UNESCAPED_UNICODE ...

  3. C char&ast;&ast; 的一点儿理解

    理解是就是char** 相当于字符串数组,我以往纠结于该用 **arr还是*arr还是 (*arr),还是(**arr): 对于**arr而言:*arr代表数组的最开头,也就是第一个字串的内容.**a ...

  4. 字符串匹配算法之Rabin-Karp算法

    关键思想在于把输入的字符既看作图形符号,又看做数字,预处理算出模式P的d进制的值p,时间复杂度为Θ(m),让后针对n - m + 1个有效偏移s计算出相应的ts,这里是由于利用ts来计算ts+1,时间 ...

  5. JavaScript(七)

    类型转换 1.直接转换 parseInt() 与 parseFloat() alert('12'+7); //弹出127 alert( parseInt('12') + 7 ); //弹出19 ale ...

  6. 基数排序模板(基数排序,C&plus;&plus;模板)

    算法的理论学习可右转Creeper_LKF大佬的洛谷日报 一个优化算法理论时间复杂度的实例点这里 另一个实例点这里 时间复杂度\(O(n)\),算常数的话要乘位长. 蒟蒻参考了Creeper_LKF大 ...

  7. JavaScript设计模式学习之路——面向对象的思想

    今天,我拿到了张容铭写的这本<JavaScript设计模式>这本书,开始了关于JavaScript更深一点的学习. 看到这本书开始的时候,虽然之前通过看书.一些比较好的视频的讲解,对Jav ...

  8. oracle mybatis批量插入&comma;无匹配找默认

    批量插入<insert id="insertIndi" parameterType="java.util.HashMap" useGeneratedKey ...

  9. reload函数

    reload函数 python2中reload()是内置函数,可以直接调用: reload() python3中将reload()函数放到了imp包中,需要先引入imp包: from imp impo ...

  10. bzoj 3544 &lbrack;ONTAK2010&rsqb;Creative Accounting 贪心

    Description 给定一个长度为N的数组a和M,求一个区间[l,r],使得(\sum_{i=l}^{r}{a_i}) mod M的值最大,求出这个值,注意这里的mod是数学上的mod Input ...