题目链接:http://acdream.info/contest?cid=1269#problem-C

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

2
***
**
3384
846
*****
4**
**
3384
846
*****

Sample Output

2
1 解题思路:
题上就是实现一个三位数乘以一个两位数的过程,而且该三位数乘以十位数的各位等于四位数,乘以十位等于三位数,最后得到的是五位数,但是有一些限制条件,就是在这五行中有的位置上的数字已经给出来了,让你找符合的条件的个数;
我的做法就是,用两个for循环一个是三位数,以为是两位数,在用一个判断函数,看看这三位数跟两位数是不是符合题上给的条件,如果符合就继续,把该三位数乘以两位数个位数看是否满足四位数且满足题上给的四位数条件,还有该三位数乘以两位数的十位是否是三位数且也满足题目上给的条件,这些都满足后,在把得到的计算后的四位数加上三位数*10(注:因为是乘法运算右移了一位)看是否满足五位数且也符合题上该行的条件,如果这也满足就是其中符合条件的一个了。
AC代码:
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
char a[][];
int judge1(int x)
{
int a1,b,c,d,e,f;
if(x>=&&x<)
{
a1=x/;b=x%;
if(a[][]!='*'&&a[][]-''!=a1) return ;
if(a[][]!='*'&&a[][]-''!=b) return ;
}
else if(x>=&&x<)
{
a1=x/;b=(x%)/;c=x%;
if(a[][]!='*'&&a[][]-''!=a1) return ;
if(a[][]!='*'&&a[][]-''!=b) return ;
if(a[][]!='*'&&a[][]-''!=c) return ;
}
else if(x>=&&x<)
{
a1=x/;b=(x%)/;c=(x%)/;d=x%;
if(a[][]!='*'&&a[][]-''!=a1) return ;
if(a[][]!='*'&&a[][]-''!=b) return ;
if(a[][]!='*'&&a[][]-''!=c) return ;
if(a[][]!='*'&&a[][]-''!=d) return ;
}
else if(x>=)
{
a1=x/;b=(x%)/;c=(x%)/;d=(x%)/;e=x%;
if(a[][]!='*'&&a[][]-''!=a1) return ;
if(a[][]!='*'&&a[][]-''!=b) return ;
if(a[][]!='*'&&a[][]-''!=c) return ;
if(a[][]!='*'&&a[][]-''!=d) return ;
if(a[][]!='*'&&a[][]-''!=e) return ;
}
return ;
}
int judge2(int x)
{
int a1,b,c,d;
a1=x/;b=(x%)/;c=x%;
if(a[][]!='*'&&a[][]-''!=a1) return ;
if(a[][]!='*'&&a[][]-''!=b) return ;
if(a[][]!='*'&&a[][]-''!=c) return ;
return ;
}
int main()
{
int i,j,k,tcase,sum;
scanf("%d",&tcase);
while(tcase--)
{
sum=;
int m,n;
for(i=; i<; i++) scanf("%s",a[i]);
for(i=; i<=; i++)
{
for(j=; j<=; j++)
{
m=((j%)*i);n=((j/)*i);
if(judge1(i)&&judge1(j)&&m<&&m>=&&n<&&n>=)
{
if(judge1(m)&&judge2(n))
{
if(m+n*>=&&judge1(m+n*)) sum++;
}
}
}
}
printf("%d\n",sum);
}
return ;
}

[ACdream]小晴天老师系列——竖式乘的更多相关文章

  1. acdream 小晴天老师系列——竖式乘法(简单穷举)

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

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

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

  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. 201521123075 《Java程序设计》第9周学习总结

    1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避 ...

  2. 201521123024 《Java程序设计》 第九周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...

  3. 笔记1 linux 多线程 互斥锁

    //mutex lock #include<stdio.h> #include<unistd.h> #include<pthread.h> struct test ...

  4. cnpack热键

    CnPack的热键为ALt+space,当不自动补齐时按下Alt+space则会补齐

  5. showfm练习小项目总结

    Showfm 项目总结: 有一个主页面, 有一个service,启动和结束一般在主页面里面完成. OnCreate启动service OnDestroy关闭service EventBus 信息传递 ...

  6. [js高手之路]Node.js+jade+mongoose实战todolist(分页,ajax编辑,删除)

    该系列文章索引: [js高手之路]node js系列课程-创建简易web服务器与文件读写 [js高手之路]node js系列课程-图解express+supervisor+ejs用法 [js高手之路] ...

  7. GUI PasswordField

    GUI.PasswordField public static function PasswordField(position: Rect, password: string, maskChar: c ...

  8. 导航栏 .active激活

    参考 :使用angularjs写一个导航栏控制器 1.点击其中一个li其他的class不影响 2.点击其中一个li其他的class影响 <!DOCTYPE html> <html l ...

  9. NopCommerce添加事务机制

    NopCommerce现在最新版是3.9,不过依然没有事务机制.作为一个商城,我觉得事务也还是很有必要的.以下事务代码以3.9版本作为参考: 首先,IDbContext接口继承IDisposable接 ...

  10. Codeforces Round #436 (Div. 2) C. Bus

    http://codeforces.com/contest/864/problem/C 题意: 坐标轴上有x = 0和 x = a两点,汽车从0到a之后掉头返回,从a到0之后又掉头驶向a...从0到a ...