思路分析

  • 此题采用dfs,注意X选中了之后所有的X值相同,所以需要一个flag来存储X的值。
  • 注意前导0要单独讨论,然后就是当'X'或者'_'在第一位时不能选0,其它位可以选0 - 9 任意一个数。

代码如下

//now-当前位数 flag-X的值 num-当前数的大小
#include <bits/stdc++.h>
using namespace std;
string s;
int ans;
void dfs(int now, int flag, int num)
{
if (now == s.size())
{
if (num % 25 == 0)
{
ans++;
}
return;
}
if (s[now] != 'X' && s[now] != '_')
{
//如果当前位为数,那就dfs下一位
dfs(now + 1, flag, num * 10 + s[now] - '0');
}
else if (s[now] == 'X')
{
if (flag != -1)
dfs(now + 1, flag, num * 10 + flag);
//如果前面已经选好了X的值,那么加上这个值即可
else
{
int down = 0;
if (now == 0 && s.size() > 1)
down = 1;
for (int i = down; i <= 9; i++)
{
dfs(now + 1, i, num * 10 + i);
}
//第一次出现X,有两种情况,第一种是在第一位,那么只能选1-9,否则可以选0-9
}
}
else if (s[now] == '_')
{
int down = 0;
if (now == 0 && s.size() > 1)
{
down = 1;
}
for (int i = down; i <= 9; i++)
{
dfs(now + 1, flag, num * 10 + i);
}
//与X同理
}
}
int main()
{
cin >> s;
if (s[0] == '0' && s.size() > 1)
{
cout << 0 << endl;
return 0;
}
else
{
dfs(0, -1, 0);
cout << ans << endl;
return 0;
}
}

Codeforces1575D的更多相关文章

随机推荐

  1. Kubernetes 持久化数据存储 StorageClass

    文章链接 PV 和 PVC 模式要先创建好 PV,然后再定义好 PVC 进行一对一的绑定.那么如果遇到大集群,也一一的创建吗?这样来说维护成本很高,工作量大.这个时候就有了 Kubernetes 提供 ...

  2. noip模拟43

    A. 第一题 儿子遍历顺序按深度由小到大即可 B. 第二题 二分最小值,以点权作为初始距离跑最长路即可 直接用大根堆跑 \(dij\) 会 \(T\),考虑初始权值可以处理,且边权一定,用类似蚯蚓的方 ...

  3. ThinkCMF5.1主要特性

    更改框架协议为MIT,让你更自由地飞 基于ThinkPHP 5.1重构,但核心代码兼容5.0版本,保证老用户最小升级成本 增加对swoole支持,同时支持swoole协程和全同步模式(请单独安装扩展) ...

  4. SQLmap的基本命令

    Sqlmap sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入.目前支持的数据库有MySql.Oracle.Access.PostageSQL.SQL  ...

  5. 个人作业——CVPR顶会论文爬取

    main.py #保存单个界面数据 def getInfo(url): # url='https://openaccess.thecvf.com/WACV2021' header={ 'User-Ag ...

  6. linux错误: locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory

    命令 locate my.cnf 产生以上错误 此时执行 # updatedb 更新下数据库即可

  7. vue注意点

    template下面只能有一个节点,不能是多个

  8. Shell系列(14)- declare声明变量

    declare声明变量类型 格式 declare [+/-] [选项] [变量名] 选项 -:给变量设定类型属性 +:取消变量的类型属性 -a :将变量声明为数组型 -i :将变量声明为整数型(int ...

  9. 配置 放上传文件的目录 apache(httpd)

    1. 确认服务器 开放8088端口 https://www.apachefriends.org/download.html 下载XAMPP for Windows,安装 2. 修改apache主配置文 ...

  10. vm中安装win2012并安装hyper-V不支持嵌套

    在虚拟机中安装win2012,并安装hyper-v提示: 无法安装hyper-v:虚拟机监控程序已经在运行 找到虚拟机目录下,用文本编辑器打开该系统的虚拟机配置文件(.vmx后缀),在配置文件末尾增加 ...