码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-23 19:07:58      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:

直接上题目:

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

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

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

Hint

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

技术分享

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

Submit Status
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int pj(char a[],char b[],int n)//判断是否吻合条件
{
    int i;
    if(strlen(a)!=n)//长度不对直接结束
        return 0;
    for(i=0;i<n;i++)
    {
        if((a[i]!=b[i]&&b[i]!=*))
            return 0;//不吻合
    }
    return 1;//吻合
}

int main()
{
    int t,i,j,ans=0;
    char a[10],b[10],c[10],d[10],e[10],x[10];
    scanf("%d",&t);
    while(t--)
    {
        scanf(" %s",a);
        scanf(" %s",b);
        scanf(" %s",c);
        scanf(" %s",d);
        scanf(" %s",e);
        ans=0;
        for(i=100;i<1000;i++)
        {
            sprintf(x,"%d",i);//acdream用标准库没有itoa,sprint功能和itoa一样
            if(!pj(x,a,3))
                continue;
            for(j=10;j<100;j++)
            {
                sprintf(x,"%d",j);
                if(!pj(x,b,2))
                    continue;
                sprintf(x,"%d",j%10*i);
                if(!pj(x,c,4))
                    continue;
                sprintf(x,"%d",j/10*i);
                if(!pj(x,d,3))
                    continue;
                sprintf(x,"%d",j/10*i*10+j%10*i);
                if(!pj(x,e,5))
                    continue;
                ans++;//所有条件都满足了自加
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

有一点要注意就是:acdream用标准库没有itoa,sprint功能和itoa一样,一开始用itoa编译错误了两次

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

标签:

原文地址:http://www.cnblogs.com/Qiao994255978/p/4451097.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!