[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 ...
随机推荐
- Java程序设计——学生基本信息管理系统(团队+个人)
学生信息管理系统(From:单身贵族) 团队部分 一.团队介绍("单身贵族"): 吴剑通[组长]:201521123056,唯一队员,网络1512班,团支书 二.项目git地址 三 ...
- java程序与编译
Java 源文件(.java) 使用 Java编译器(javac.exe)编译 生成 java字节码文件(.class) 使用 解释执行器(java.exe) 将字节码文件加载到java虚拟机(j ...
- linux 下怎样查找一个文件夹在哪个目录下?
如果只显示所在目录的路径: find 目录 -type d -name "查询目录名" -printf "%h\n" 如果同时显示目录名称和所在目录的路径: f ...
- JSP第六篇【自定义标签之传统标签】
为什么要使用自定义标签? JSTL标签库只提供了简单的输出等功能,没有实现任何的HTML代码封装,并且某些复杂类型转换,或者逻辑处理的时候,JSTL标签库完成不了,需要自定义标签! 编写自定义标签的步 ...
- springmvc02
1,创建实体类对象User 注意要导入 bean-validator.jar 包 package com.yangw.springmvc.entity; import org.hibernate.va ...
- Linux 下安装maven
1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令:2.进入下载文件夹,找到下载的文件,运行 ...
- ArrayList 和 LinkedList 的实现与区别
(转载请标明出处) 1.ArrayLis t的实现 2.LinkedLis t的实现 3.ArrayList 和 LinkedList 的区别 ArrayList 的实现: 1.MyArrayList ...
- 51nod 1126 求递推序列的第N项 思路:递推模拟,求循环节。详细注释
题目: 看起来比较难,范围10^9 O(n)都过不了,但是仅仅是看起来.(虽然我WA了7次 TLE了3次,被自己蠢哭) 我们观察到 0 <= f[i] <= 6 就简单了,就像小学初中学的 ...
- 机器学习-KNN分类器
1. K-近邻(k-Nearest Neighbors,KNN)的原理 通过测量不同特征值之间的距离来衡量相似度的方法进行分类. 2. KNN算法过程 训练样本集:样本集中每个特征值都已经做好类别 ...
- ExtJS配置与入门项目创建
Sencha Cmd下载:http://cdn.sencha.com/cmd/6.5.2/jre/SenchaCmd-6.5.2-windows-64bit.zip ExtJS-6.2.0下载:htt ...