zoukankan      html  css  js  c++  java
  • P1149 火柴棒等式

     P1149 火柴棒等式

    题目描述

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

    注意:

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

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

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

    输入输出格式

    输入格式:

    输入文件matches.in共一行,又一个整数n(n<=24)。

    输出格式:

    输出文件matches.out共一行,表示能拼成的不同等式的数目。

    输入输出样例

    输入样例#1:
    样例输入1:
    14
    样例输入2:
    18
    输出样例#1:
    样例输出1:
    2
    样例输出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<iostream>
     2 #include<cstdio>
     3 
     4 using namespace std;
     5 
     6 int sk[2100] = {6,2,5,5,4,5,6,3,7,6};
     7 int n;
     8 int ans;
     9 
    10 void yu()
    11 {
    12     for(int i=10;i<=2001;++i)
    13     {
    14         int c = i;
    15         while(c)
    16         {
    17             sk[i] += sk[c%10];
    18             c /= 10;
    19         }
    20     }
    21 }
    22 int main()
    23 {
    24     yu();
    25     scanf("%d",&n);
    26     n -= 4;
    27     for(int i=0;i<=1000;++i)
    28     {
    29         if(sk[i]>=n) continue ;
    30         for(int j=0;j<=1000;++j)
    31         {
    32             if(sk[i]+sk[j]+sk[i+j] == n) ans++;
    33         }
    34     }
    35     printf("%d",ans);    
    36     return 0;
    37 }
     
  • 相关阅读:
    linux基础(六) --- 杀死包含应用名称的所有进程
    linux基础(五) ---ubuntu 修改国内源
    linux基础----vim编辑器(三)
    linux基础----vim编辑器(二)
    linux基础----vim编辑器(一)
    计算机基础----必会单词
    支付宝还可以更进一步的改造世界。
    insertAdajcentHTML
    11个触摸设备的触摸时间处理
    手机上的jQuery
  • 原文地址:https://www.cnblogs.com/mjtcn/p/6849956.html
Copyright © 2011-2022 走看看