火柴棒等式

可恶啊我居然还是被水题打败了,什么时候我能完全把水题过了啊呜呜呜呜

## 题目描述

给你 n 根火柴棍,你可以拼出多少个形如 A+B=C 的等式?等式中的 A、B、C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0.

注意:

1. 加号与等号各自需要两根火柴棍;

2. 如果 A\neq B,则 A+B=C 与 B+A=C 视为不同的等式(A,B,C\geq0);

3. n 根火柴棍必须全部用上。

## 输入格式

一个整数 n(1-24)

## 输出格式

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

## 样例 #1

### 样例输入 #1

```
14
```

### 样例输出 #1

```
2
```

## 样例 #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。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int p[1000010]={6},n,a[10]={6,2,5,5,4,5,6,3,7,6},res;//注意这里要把p数组全部变成0的模样;
 4 int main()
 5 {
 6     cin>>n;
 7     for(int i=1;i<=2000;i++)
 8     {
 9         int x=i;
10         while(x>=1)
11         {
12             p[x]+=a[x%10];
13             x/=10;
14         }
15     }
16     for(int i=0;i<=1000;i++)
17         for(int j=0;j<=1000;j++)
18             if(p[i]+p[j]+p[i+j]==n-4) res++;
19     cout<<res;
20     return 0;
21 }

 

posted @ 2023-05-25 15:58  o-Sakurajimamai-o  阅读(52)  评论(0)    收藏  举报
-- --