火柴棍等式

来源:互联网 发布:linux下安装数据库 编辑:程序博客网 时间:2024/04/29 19:28


超超终于向他的女神小美表白了。可是小美只喜欢聪明的程序员,当场给他出了道难题,题目如下:给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:

注意:
1. 加号与等号各自需要两根火柴棍
2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)
3. n根火柴棍必须全部用上
超超分分钟就解出来了。
亲爱的小伙伴们,你们是不是也可以分分钟搞定这道难题呢?

Input

一个整数N( N <= 24),表示N根火柴棍

Output

可以拼出形如“A+B=C”的等式的个数。如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)

Sample Input

18

Sample Output

9

Hint

9个等式为:

0+4=4

0+11=11

1+10=11

2+2=4

2+7=9

4+0=4

7+2=9

10+1=11

11+0=11

先把每个数对应的所需火柴棍的个数存到一个数组里,写一个自定义的函数将1从1999的数表示所需的火柴棍存到另一个数组里。利用遍历求出你输入的火柴棍数量所能组成的等式。注意当A与B不同时可代表两个等式。

AC代码:#include<cstdio>#include<iostream>#include<cstdlib>using namespace std;int need[] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};int M[2000];int ans;int match(int cur){        int ans = 0, ret;        if (cur == 0)        {                return 6;        }        while (cur > 0)        {                ret = cur % 10;                ans += need[ret];                cur /= 10;        }        return ans;}void GetMatch(){        for (int i = 0; i <= 1999; ++i)        {                M[i] = match(i);

        }}int main(){        int n = 24;        scanf("%d", &n);        GetMatch();        for (int i = 0; i <= 1000; i++)                for (int j = i; j <= 1000; j++)                {                        int a = M[i];                        int b = M[j];                        if (a + b > n - 6)                        {                                continue;                        }                        int d = M[i + j];                        if (a + b + d + 4 == n && i != j)                        {                                ans += 2;                        }                        if (a + b + d + 4 == n && i == j)                        {                                ans++;                        }                }        printf("%d\n", ans);        return 0;}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 牙黑了掉了一块怎么办 1岁幼儿牙齿腐蚀怎么办 我的大牙变黑了怎么办 牙齿里面黑了疼怎么办 最里面的牙黑了怎么办 牙龈的肉裂开了怎么办 有蛀牙怎么办可以变好么 拔智齿没拔干净怎么办 蛀牙只剩牙根了怎么办 牙掉的就剩牙根怎么办 蛀牙牙冠都掉了怎么办 拔智齿断了牙根怎么办 牙肉肿痛有脓包怎么办 种植牙到寿命后怎么办 牙齿松动快掉了怎么办 一颗牙齿松动了怎么办 种植牙牙冠掉了怎么办 牙就剩下牙根了怎么办 后面的大牙掉了怎么办 两边大牙都没了怎么办 拔牙把牙根断了怎么办 拔乳牙牙根断了怎么办 拔牙时牙根断了怎么办 孕晚期牙根掉了怎么办 根管治疗后牙裂怎么办 智齿拔断了牙根怎么办 大牙断了牙根还在怎么办 孕妇牙疼的要命怎么办 牙烂了个大窟窿怎么办 牙齿又痒又痛怎么办 大牙就剩牙根了怎么办 蛀牙只剩牙根痛怎么办 带牙冠的牙疼了怎么办 牙龈肉与牙分离怎么办 后槽牙松动还疼怎么办 嘴唇又干又痒怎么办 嘴唇边突然肿了怎么办 大牙齿蛀牙很疼怎么办 蛀牙经常牙疼怎么办呢 小孩牙齿稀疏牙缝大怎么办 7岁牙齿缝隙大怎么办