acdream 1704(暴力)

题意:
Problem Description

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

以下图:

然后小晴天2话不说,3下5除2就写出了答案:

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

多组数据,首先是1个整数t(t<=20),表示数据组数。
对每组数据,用5行表示1个竖式,每行均为1个字符串,仅含有星号(*)与数字(‘0’~’9’)组成,其中星号表示空白
其中第1行动长度为3的字符串。
第2行动长度为2的字符串。
第3行动长度为4的字符串。
第4行动长度为3的字符串。
第5行动长度为5的字符串。
Output

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

2


**
3384
846


4**
**
3384
846


Sample Output

2
1
题解:由于第1个乘数3位数,枚举从100到999,第2个乘数2位数,枚举从10到99,先去匹配已有值,不满足continue,否则得到第3个数字和第4个数字,再去匹配,不满足continue,否则得到最后1个数字,匹配成功答案加1。

#include <stdio.h>
#include <string.h>
char str[10][10];
int s[10][10];
int res = 0, flag[5] = {3, 2, 4, 3, 5};

void solve(int x) {
for (int i = 0; i < flag[x]; i++)
if (str[x][i] != '*')
s[x][i] = str[x][i] - '0';
else
s[x][i] = -1;
}

bool judge(int x, int cur) {
int a = flag[cur] - 1, temp[10];
while (x > 0 && a >= 0) {
int b = x % 10;
if (s[cur][a] != -1 && s[cur][a] != b)
return false;
a--;
x /= 10;
}
if (x == 0 && a == -1)
return true;
return false;
}

int main() {
int t;
scanf("%d", &t);
while (t--) {
for (int i = 0; i < 5; i++) {
scanf("%s", str[i]);
solve(i);
}
res = 0;
for (int i = 100; i < 1000; i++) {
if (!judge(i, 0))
continue;
for (int j = 10; j < 100; j++) {
if (!judge(j, 1))
continue;
int temp1 = i * (j % 10);
if (!judge(temp1, 2))
continue;
int temp2 = i * (j / 10);
if (!judge(temp2, 3))
continue;
int temp = temp1 + temp2 * 10;
if (!judge(temp, 4))
continue;
res++;
}
}
printf("%d
"
, res);
}
return 0;
}

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » acdream 1704(暴力)

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡