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

直接上题目:

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

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

题目意思很明确,只要用i,j遍历两位的乘数,满足条件则给ans+1就行

#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编译错误了两次

时间: 2024-10-25 06:13:14

[ACDream]小晴天老师系列——竖式乘法的相关文章

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

小晴天老师系列——竖式乘法 Time Limit: 4000/2000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Problem Description 小晴天是ACdream团队中最牛的老师之一,他最擅长数学运算~这天他翻开一本<AC is not a dream>杂志,发现最后一页有一道很经典的思维题,题目很简单,每个框填写一个数字,构成一个竖式,每个数的最高位不能为0,但是有一些数字被隐藏掉了,然后让你根据

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

C - 小晴天老师系列——竖式乘法 Time Limit: 4000/2000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Submit Status Problem Description 小晴天是ACdream团队中最牛的老师之一,他最擅长数学运算~这天他翻开一本<AC is not a dream>杂志,发现最后一页有一道很经典的思维题,题目很简单,每个框填写一个数字,构成一个竖式,每个数的最高位不能为0,但

acdream 小晴天老师系列——晴天的后花园 (暴力+剪枝)

小晴天老师系列——晴天的后花园 Time Limit: 10000/5000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Problem Description 小晴天非常漂亮的后花园,打算以后退休之后在里面种种花,养养草,所以现在小晴天打算为他的后花园围上栅栏. 小晴天的后花园可以看成是一个m*n的矩形,但是其中有一些地方种了树,这些地方都不能安装栅栏,现在小晴天把后花园的平面图告诉你了,请你帮忙设计一个最大的矩形

acdream 小晴天老师系列——苹果大丰收(DP)

小晴天老师系列——苹果大丰收 Problem Description 小晴天的后花园有好多好多的苹果树,某天,苹果大丰收~小晴天总共摘了M个苹果,我们假设苹果之间是不可分辨的. 为了保存苹果,小晴天买了N个一模一样的箱子,想要把苹果放进去,允许有的箱子是空的,请问小晴天有多少种不同的放法呢? 例如对于4个苹果,3个箱子,2+1+1和1+2+1和1+1+2 是同一种分法. Input 多组数据,首先是一个正整数t(t<=100)表示数据的组数. 每组数据均包含二个整数M和N(1<=M,N<

F - 小晴天老师系列——苹果大丰收

F - 小晴天老师系列——苹果大丰收 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Submit Status Problem Description 小晴天的后花园有好多好多的苹果树,某天,苹果大丰收~小晴天总共摘了M个苹果,我们假设苹果之间是不可分辨的. 为了保存苹果,小晴天买了N个一模一样的箱子,想要把苹果放进去,允许有的箱子是空的,请问小晴天有多少种不同的放法呢? 例

D - 小晴天老师系列——晴天的后花园

D - 小晴天老师系列——晴天的后花园 Time Limit: 10000/5000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Submit Status Problem Description 小晴天非常漂亮的后花园,打算以后退休之后在里面种种花,养养草,所以现在小晴天打算为他的后花园围上栅栏. 小晴天的后花园可以看成是一个m*n的矩形,但是其中有一些地方种了树,这些地方都不能安装栅栏,现在小晴天把后花园的平面图

G - 小晴天老师系列——可恶的墨水瓶

G - 小晴天老师系列——可恶的墨水瓶 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Submit Status Problem Description 小晴天老师正在备课,这时,可恶的墨水瓶突然自己打翻了!悲剧发生了!小晴天的备课稿都被墨水弄脏了.... 不过小晴天很乐观~这时他把他的一张纸分成n*m个格子,其中有一些格子被墨水涂黑了,有的没有.那么小晴天想知道,最大的一块

E - 小晴天老师系列——我有一个数列!

E - 小晴天老师系列——我有一个数列! Time Limit: 20000/10000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Submit Status Problem Description 小晴天:“我有一个数列!” 小晴天:“我还要有很多很多的数列!” 于是小晴天就把这个数列的所有连续子数列写出来. 然后小晴天把每个连续子数列中的最大的数写出来. 那么,有多少个比K大呢? Input 多组数据,首先是一

【算法学习笔记】35.高精度 竖式乘法 SJTU OJ 1274

Description 输入a,b 输出a*b的竖式乘法,格式见样例. Sample Input1 11 9 Sample Output1 11 9 -- 99 Sample Input2 10 10 Sample Output2 10 10 --- 100 Sample Input3 101 101 Sample Output3 101 101 ----- 101 101 ----- 10201 Sample Input4 10086 2 Sample Output4 2 10086 ----