【打表】P1149 火柴棒等式

题目描述

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

注意:

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

  2. 如果 A≠B ,则 A+B=C 与 B+A=C 视为不同的等式(A,B,C>=0)

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

输入格式

一个整数 n(n<=24) 

输出格式

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

输入输出样例

输入  
14
输出  
2
输入  
18
输出  
9

说明/提示

【输入输出样例1解释】

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

【输入输出样例2解释】

个等式为:

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
思路:打表(第一次尝试,注释代码用来生成表)
代码:
#include<cstdio>
//int cost[10000]={6,2,5,5,4,5,6,3,7,6};
//int main(){
//    int sum=0;
//    for(int i=10;i<10000;i++){
//        sum=0;
//        int k=i;
//        while(k){
//            sum+=cost[k%10];
//            k/=10;
//        }
//        cost[i]=sum;
//    }
//    for(int k=0;k<=24;k++){
//        sum=0;
//        for(int i=0;i<5000;i++){
//            for(int j=0;j<5000;j++){
//                if(cost[i]+cost[j]+cost[i+j]==k-4){
//                    sum++;
//                }
//              }
//        }
//        printf("%d ",sum);
//    }
//} 
int main(){
    int num[25]={0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,8,9,6,9,29,39,38,65,88,128};
    int n;scanf("%d",&n);
    printf("%d",num[n]);
}
 
posted @ 2020-01-15 22:20  狂奔的小学生  阅读(317)  评论(0编辑  收藏  举报