小晴天老师系列——竖式乘法

Time Limit: 4000/2000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others)
 

Problem Description

小晴天是ACdream团队中最牛的老师之一,他最擅长数学运算~这天他翻开一本《AC is not a dream》杂志,发现最后一页有一道很经典的思维题,题目很简单,每个框填写一个数字,构成一个竖式,每个数的最高位不能为0,但是有一些数字被隐藏掉了,然后让你根据没有隐藏的数字填出隐藏的数字。

如下图:

然后小晴天二话不说,三下五除二就写出了答案:

然后小晴天就觉得这样的题目太简单了,于是问你是否有办法来求出一道题目有多少种不同的答案呢?(只要有一个方框有不同的数字即为不同的答案)

Input

多组数据,首先是一个整数t(t<=20),表示数据组数。

对于每组数据,用5行表示一个竖式,每行均为一个字符串,仅含有星号(*)与数字('0'~'9')组成,其中星号表示空白

其中第一行为长度为3的字符串。

第二行为长度为2的字符串。

第三行为长度为4的字符串。

第四行为长度为3的字符串。

第五行为长度为5的字符串。

Output

对于每组数据,输出一个整数x,表示符合乘法竖式法则的填法的种类。

Sample Input

  1. 2
  2. ***
  3. **
  4. 3384
  5. 846
  6. *****
  7. 4**
  8. **
  9. 3384
  10. 846
  11. *****

Sample Output

  1. 2
  2. 1

Hint

样例1,除了题目中的那种情况,还有这种

而样例2,因为第一个数的百位被固定为4,故只有一种填法。

思路:第一行和第二行两个数都是比较小的,直接穷举这2个数,再将17格子的所有可能行的结果保存。根据输入17个就直接搜可行的结果匹配。注意5个数字的开头都不能为0。

  1. /*
  2. * this code is made by xcw0754
  3. * Problem: 1704
  4. * Verdict: Accepted
  5. * Submission Date: 2015-07-16 10:18:37
  6. * Time: 4MS
  7. * Memory: 36836KB
  8. */
  9. //#pragma comment(linker,"/STACK:102400000,102400000")
  10. #include <iostream>
  11. #include <stdio.h>
  12. #include <string.h>
  13. #include <vector>
  14. #include <stack>
  15. #include <algorithm>
  16. #include <map>
  17. #include <bits/stdc++.h>
  18. #define LL long long
  19. #define pii pair<int,int>
  20. #define INF 0x7f7f7f7f
  21. using namespace std;
  22. const int N=;
  23. int up;
  24. int s[N][];
  25.  
  26. void pre_cal()
  27. {
  28. up=;
  29. for(int i=; i<; i++)
  30. {
  31. for(int j=; j<; j++)
  32. {
  33. s[up][]=i/; //不能为0
  34. s[up][]=i/%;
  35. s[up][]=i%;
  36.  
  37. s[up][]=j/; //不能为0
  38. s[up][]=j%;
  39.  
  40. int tmp=i*(j%); //第3行
  41. s[up][]=tmp/; //不能为0
  42. if(!s[up][] || s[up][]>) continue;
  43. s[up][]=tmp/%;
  44. s[up][]=tmp/%;
  45. s[up][]=tmp%;
  46.  
  47. tmp=i*(j/); //第4行
  48. s[up][]=tmp/; //不能为0
  49. if(!s[up][]|| s[up][]>) continue;
  50. s[up][]=tmp/%;
  51. s[up][]=tmp%;
  52.  
  53. tmp=i*j; //第5行
  54. s[up][]=tmp/;//不能为0
  55. if(!s[up][]) continue;
  56. s[up][]=tmp/%;
  57. s[up][]=tmp/%;
  58. s[up][]=tmp/%;
  59. s[up][]=tmp%;
  60. up++;
  61. }
  62. }
  63.  
  64. }
  65.  
  66. int now[];
  67. vector<int> alk;
  68. char c[];
  69.  
  70. void get_input()
  71. {
  72. memset(now,,sizeof(now));
  73. alk.clear();
  74.  
  75. scanf("%s",c);
  76. scanf("%s",c+);
  77. scanf("%s",c+);
  78. scanf("%s",c+);
  79. scanf("%s",c+);
  80.  
  81. for(int i=; i<; i++)
  82. if(isdigit(c[i]))
  83. {
  84. now[i]=c[i]-'';
  85. alk.push_back(i);
  86. }
  87. }
  88.  
  89. int cal()
  90. {
  91. int ans=;
  92. for(int i=; i<up; i++)
  93. {
  94. int j;
  95. for(j=; j<alk.size(); j++) //这几个都要匹配
  96. {
  97. int k=alk[j];
  98. if(now[k]!=s[i][k]) break;
  99. }
  100. if(j==alk.size())
  101. ans++;
  102. }
  103. return ans;
  104. }
  105.  
  106. int main()
  107. {
  108. //freopen("input.txt", "r", stdin);
  109. pre_cal();
  110. int t;
  111. scanf("%d",&t);
  112. while(t--)
  113. {
  114. get_input();
  115. printf("%d\n",cal());
  116. }
  117. return ;
  118. }

AC代码

acdream 小晴天老师系列——竖式乘法(简单穷举)的更多相关文章

  1. C -小晴天老师系列——竖式乘法

    C - 小晴天老师系列——竖式乘法 Time Limit: 4000/2000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others ...

  2. [ACdream]小晴天老师系列——竖式乘

    题目链接:http://acdream.info/contest?cid=1269#problem-C Problem Description 小晴天是ACdream团队中最牛的老师之一,他最擅长数学 ...

  3. acdream 小晴天老师系列——苹果大丰收(DP)

    小晴天老师系列——苹果大丰收 Problem Description 小晴天的后花园有好多好多的苹果树,某天,苹果大丰收~小晴天总共摘了M个苹果,我们假设苹果之间是不可分辨的. 为了保存苹果,小晴天买 ...

  4. acdream 小晴天老师系列——晴天的后花园 (暴力+剪枝)

    小晴天老师系列——晴天的后花园 Time Limit: 10000/5000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

  5. acdream 小晴天老师系列——我有一个数列! (ST算法)

    小晴天老师系列——我有一个数列! Time Limit: 20000/10000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)S ...

  6. G - 小晴天老师系列——可恶的墨水瓶

    G - 小晴天老师系列——可恶的墨水瓶 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Othe ...

  7. E - 小晴天老师系列——我有一个数列!

    E - 小晴天老师系列——我有一个数列! Time Limit: 20000/10000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/O ...

  8. D - 小晴天老师系列——晴天的后花园

    D - 小晴天老师系列——晴天的后花园 Time Limit: 10000/5000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Oth ...

  9. F - 小晴天老师系列——苹果大丰收

    F - 小晴天老师系列——苹果大丰收 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Other ...

随机推荐

  1. IEtester不靠谱

    对于刚刚学习前端的人来说,IEtester无疑是个测试神器, 刚开始用的时候,真有种如获至宝的兴奋. 然而,随着你学习的深入,你会慢慢地发现这个东西不太靠谱,而且会觉得没必要用它.为什么这么说呢? 首 ...

  2. 1067. Sort with Swap(0,*) (25)

    时间限制 150 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given any permutation of the num ...

  3. ASP.NET 页面传值得9种方式

    1. Get(即使用QueryString显式传递)     方式:在url后面跟参数.     特点:简单.方便.     缺点:字符串长度最长为255个字符:数据泄漏在url中.     适用数据 ...

  4. Linux下Mysql数据库备份

    今天一同事的电脑无缘无故坏了,找了IT部门检测说是硬盘坏了,数据无法恢复.好悲剧.自己博客也写了好久不容易,要是突然间数据丢了那怎么办!于是写了个数据库自动备份脚本,并创建任务计划,实现每天22:30 ...

  5. C#网络编程简单实现通信小例子-2

    1.主界面  2.源代码                                                         Client public partial class For ...

  6. 使用maven 命令运行项目

    安装好maven3 配置好环境变量后, 输入mvn -v 查看安装是否成功, 然后导入maven项目, 选择import 导入选择Exsting Maven Projects, 接下来就准备运行一下m ...

  7. Elasticsearch从0.90(0.90.x)到1.2(1.x)API的变化-二

    本文为官方文档的译文加个人理解.作者翻译时,elasticsearch(下面简称es)的版本为1.2.2. 请支持原创:http://www.cnblogs.com/donlianli/p/38367 ...

  8. 团体程序设计天梯赛-练习集L1-009. *N个数求和

    L1-009. N个数求和 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题的要求很简单,就是求N个数字的和.麻烦的是,这些 ...

  9. 自助Linux之问题诊断工具strace

    转  http://www.cnblogs.com/bangerlee/archive/2012/02/20/2356818.html 引言 “Oops,系统挂死了..." “Oops,程序 ...

  10. call && jmp 指令

    对于jmp指令: (1)jmp short 标号相当于(ip)=(ip)+8位位移 跳转范围是[-128,127](2)jmp near ptr 标号相当于(ip)=(ip)+16位位移 跳转范围是[ ...