P1149 [NOIP 2008 提高组] 火柴棒等式

链接:P1149 [NOIP 2008 提高组] 火柴棒等式 - 洛谷

题目描述

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

P1149 [NOIP 2008 提高组] 火柴棒等式_第1张图片

注意:

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

输入格式

一个整数 n(1≤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。

noip2008 提高第二题

C++代码如下:

#include
using namespace std;

int n;
int ans=0;
int counts[10]={6,2,5,5,4,5,6,3,7,6};

int f(int x){
    if(x==0){
        return 6;
    }
    int sum=0;
    while(x!=0){
        sum+=counts[x%10];
        x/=10;
    }
    return sum;
}

int main(){
    cin>>n;
    for(int i=0;i<=1000;i++){
        for(int j=0;j<=1000;j++){
            if(f(i)+f(j)+f(i+j)+4==n){
                ans++;
            }
        }
    }
    cout<

你可能感兴趣的:(蓝桥杯,算法,c++,暴力,枚举)