洛谷-P1149 火柴棒等式

洛谷-P1149 火柴棒等式

原题链接:https://www.luogu.com.cn/problem/P1149


题目描述

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

注意:

  1. 加号和等号各自需要两根火柴棍
  2. 如果A ≠ B,则A + B = C与B + A = C视为不同的等式(A,B,C >= 0)
  3. n根火柴棍必须全部用上

输入格式

一个整数 n (n <= 24)。

输出格式

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

输入输出样例

输入 #1

14

输出 #1

2

输入 #2

18

输出 #2

9

说明/提示

【输入输出样例1解释】

2个等式为0 + 1 = 1和1 + 0 = 1。

【输入输出样例2解释】

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

C++代码

#include <iostream>
using namespace std;

int main() {
    int n,i,j,ans=0;
    int a[2001]={6,2,5,5,4,5,6,3,7,6};
    cin>>n;
    n-=4;
    for(i=10;i<=2000;++i)
        a[i]=a[i/10]+a[i%10];
    for(i=0;i<=1000;++i)
    {
        for(j=0;j<=1000;++j)
            if(a[i]+a[j]+a[i+j]==n)
                ++ans;
    }
    cout<<ans<<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/yuzec/p/12619173.html