NOIP2015年普级组试题 火材棒等式
2023-09-27 14:28:27 时间
NOIP2015年普级组试题 火材棒等式
题目
给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:
注意:
- 加号与等号各自需要两根火柴棍
- 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)
- n根火柴棍必须全部用上
输入
输入文件matches.in共一行,又一个整数n(n<=24)。
输入样例1
14
输入样例2
18
输出
输出文件matches.out共一行,表示能拼成的不同等式的数目。
输出样例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~1001)所要用的火柴棒数,再把每一种可能性枚举出来,只要成立sum就加一。最后只要输出sum就OK了。
代码
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int sum=0,n,a[1001]={6,2,5,5,4,5,6,3,7,6};//初始化
scanf("%d",&n);//读入
n-=4;//把加号和等号所要用的火材棒数减去
for (int i=10;i<=1001;i++)
a[i]=a[i%10]+a[i/10];//求出每个数字所要用的火材棒数
for (int i=0;i<=1001;i++)
for (int j=0;j<=1001;j++)
{
if (a[i]+a[j]+a[i+j]==n&&i+j<1000) sum++;//把每一种可能枚举出来,如果成立就加一
}
printf("%d",sum);//输出
return 0;
}
相关文章
- 蓝桥杯 历届试题 九宫重排
- MySQL试题之查询连续出现3次的数字
- 【2003NOIP普及组】T3.栈 试题解析
- 【2018NOIP普及组】T4:对称二叉树 试题解析
- 【2015NOIP普及组】T3:求和 试题解析
- 【2012NOIP普及组】T2. 寻宝 试题解析
- 【2008NOIP普及组】T1. ISBN号码 试题解析
- 【2006NOIP普及组】T2.开心的金明 试题解析
- 【2002NOIP普及组】T3.产生数 试题解析
- 【2000NOIP普及组】T2.税收与补贴问题 试题解析
- 十四届蓝桥选拔赛Scratch-2023.01.15 试题解析
- 经典71道Android试题及答案
- 随机获取题目中的试题号(注意函数的要求上下界包不包含)
- Java知识面试题复习(四)Java常用API
- 第十四届模拟赛第二期试题【Java解析】
- 对面试题的一点总结