题目描述

给你 nn 根火柴棍,你可以拼出多少个形如 A+B=CA+B=C 的等式?等式中的 AA、BB、CC 是用火柴棍拼出的整数(若该数非零,则最高位不能是 00)。用火柴棍拼数字 0∼90∼9 的拼法如图所示:

注意:

  1. 加号与等号各自需要两根火柴棍;
  2. 如果 A≠BA=B,则 A+B=CA+B=C 与 B+A=CB+A=C 视为不同的等式(A,B,C≥0A,B,C≥0);
  3. nn 根火柴棍必须全部用上。

输入格式

一个整数 n(1≤n≤24)n(1≤n≤24)。

输出格式

一个整数,能拼成的不同等式的数目。

输入数据 1

14

Copy

输出数据 1

2

Copy

输入数据 2

18

Copy

输出数据 2

9

Copy

提示

【输入输出样例 1 解释】

22 个等式为 0+1=10+1=1 和 1+0=11+0=1。

【输入输出样例 2 解释】

99 个等式为

0+4=40+4=4、0+11=110+11=11、1+10=111+10=11、2+2=42+2=4、2+7=92+7=9、4+0=44+0=4、7+2=97+2=9、10+1=1110+1=11、11+0=1111+0=11。

代码

#include<iostream>
using namespace std;
int counts[10] = {6,2,5,5,4,5,6,3,7,6};
int f(int n)
{
    if(n == 0)
    {
        return 6;
    }
    int ans = 0;
    while(n != 0)
    {
        ans += counts[n%10];
        n/=10;
    }
    return ans;
}

int main()
{
    int n,ans=0;
    cin >> n;
    for(int a = 0;a < 720;a++)
    {
        for(int b = 0;b < 720;b++)
        {
            if(f(a) + f(b) + f(a+b) + 4==n)
            {
                ans++;
            }
        }
    }
    cout << ans;
    return 0;
}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部