[ACdream]小晴天老师系列——竖式乘
题目链接: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]小晴天老师系列——竖式乘的更多相关文章
- acdream 小晴天老师系列——竖式乘法(简单穷举)
小晴天老师系列——竖式乘法 Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- C -小晴天老师系列——竖式乘法
C - 小晴天老师系列——竖式乘法 Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others ...
- acdream 小晴天老师系列——苹果大丰收(DP)
小晴天老师系列——苹果大丰收 Problem Description 小晴天的后花园有好多好多的苹果树,某天,苹果大丰收~小晴天总共摘了M个苹果,我们假设苹果之间是不可分辨的. 为了保存苹果,小晴天买 ...
- acdream 小晴天老师系列——晴天的后花园 (暴力+剪枝)
小晴天老师系列——晴天的后花园 Time Limit: 10000/5000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- acdream 小晴天老师系列——我有一个数列! (ST算法)
小晴天老师系列——我有一个数列! Time Limit: 20000/10000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)S ...
- G - 小晴天老师系列——可恶的墨水瓶
G - 小晴天老师系列——可恶的墨水瓶 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Othe ...
- E - 小晴天老师系列——我有一个数列!
E - 小晴天老师系列——我有一个数列! Time Limit: 20000/10000MS (Java/Others) Memory Limit: 128000/64000KB (Java/O ...
- D - 小晴天老师系列——晴天的后花园
D - 小晴天老师系列——晴天的后花园 Time Limit: 10000/5000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Oth ...
- F - 小晴天老师系列——苹果大丰收
F - 小晴天老师系列——苹果大丰收 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Other ...
随机推荐
- 在dropwizard中使用feign,使用hystrix
前言 用惯了spring全家桶之后,试试dropwizard的Hello World也别有一帆风味.为了增强对外访问API的能力,需要引入open feign.这里简单在dropwizard中使用fe ...
- 使用IntelliJ IDEA查看类的继承关系图形
最近正好也没什么可忙的,就回过头来鼓捣过去的知识点,到Servlet部分时,以前学习的时候硬是把从上到下的继承关系和接口实现记得乱七八糟. 这次利用了IDEA的diagram,结果一目了然,也是好用到 ...
- java的Date类和TimeStamp类
Java API中有两个Date类,一个是java.util.Date,其构造方法如下: Date() Date(long date) 主要方法有: boolean after(Date when) ...
- Akka(26): Stream:异常处理-Exception handling
akka-stream是基于Actor模式的,所以也继承了Actor模式的“坚韧性(resilient)”特点,在任何异常情况下都有某种整体统一的异常处理策略和具体实施方式.在akka-stream的 ...
- pig报错
pig failed to read data from....... 错误可能1:load data的目录不在,或者引用出错,load data '/in/train'这里的红色/应该去掉,因为默认 ...
- python实现算24的算法
1.介绍 给定4个整数,数字范围在1-13之间,任意使用 + - * / ( ) ,构造出一个表达式,使得最终结果为24,这就是常见的算24的游戏.本文介绍用Python语言实现的两种方式.2.实现思 ...
- [UIKit学习]02.关于UIButton
按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 按钮也是一种容器,在这一点上跟UIView类似 按钮的三种状态 normal(普通状态) 默认情况(Default) 对 ...
- Angular4 后台管理系统搭建(9) - 用自定义angular指令,实现在服务端验证
最近这段时间发现,北京这用angular4 或 angular2的公司很少.几乎是没有.很担心自己是不是把精力放到了不应该的地方.白耽误了时间.但是随着我对新版angular框架理解的加深.个人感觉a ...
- redhat下yum命令安装(替换为centos yum命令)
redhat默认自带的yum源需要注册,才能更新,报错:This system is not registered to Red Hat Subscription Management. You ca ...
- 开源纯C#工控网关+组态软件
一. 前言 在园子潜水也七八年了.说来惭愧,这么多年虽然一直自称.NET铁杆粉丝,然仅限于回几个不痛不痒的贴,既没有发布过代码,也没有写过文章. 看着.NET和C#在国外风生水起,国内却日趋没落, ...