The universe said you are not separat|

Momo·Trace

园龄:3年3个月粉丝:6关注:1

[NOIP2008 提高组] 火柴棒等式

[NOIP2008 提高组] 火柴棒等式

题目描述

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

image

注意:

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

  2. 如果 AB,则 A+B=CB+A=C 视为不同的等式(A,B,C0);

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

输入格式

一个整数 n(1n24)

输出格式

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

样例 #1

样例输入 #1

14

样例输出 #1

2

样例 #2

样例输入 #2

18

样例输出 #2

9

提示

【输入输出样例 1 解释】

2 个等式为 0+1=11+0=1

【输入输出样例 2 解释】

9 个等式为

0+4=40+11=111+10=112+2=42+7=94+0=47+2=910+1=1111+0=11

Code

#include <bits/stdc++.h>
using namespace std;
int gs[10]={6,2,5,5,4,5,6,3,7,6};
int geshu(int n)
{
if(n==0) return 6;
int k=0;
for(int i=n;i!=0;i/=10)
{
k+=gs[i%10];
}
return k;
}
int main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
int n;
cin >> n;
int num=0;
for(int a=0;a<=1000;a++)
{
for(int b=0;b<=1000;b++)
{
int c=a+b;
if(geshu(a)+geshu(b)+geshu(c)+4==n) num++;
}
}
cout << num;
return 0;
}
posted @   Momo·Trace  阅读(180)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起