NOIP 2008 火柴棒等式
洛谷 P1149 火柴棒等式
JDOJ 1540: [NOIP2008]火柴棒等式 T2
Description
给你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根火柴棍必须全部用上
Input
输入共一行,有一个整数n(n< =24)。
Output
输出共一行,表示能拼成的不同等式的数目。
Sample Input
Input 1: 14 Input 2: 18
Sample Output
Output 1: 2 Output 2: 9
HINT
【输入输出样例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
Source
题解:
因为n<=24,我们马上看出来,这个等式能模拟出的最大的数字绝对不会大于1000,所以我们考虑表示出1-1000的所有数字,基于这个开始枚举,最后得出答案。
是的,有些事情就是这么巧妙,什么打表啊,枚举啊,模拟啊,都是智慧的结晶,请大家不要嗤之以鼻——我19行结束的代码你用暴力搜索打了50多行,你凭什么嘲笑我??
所以我们开始模拟。
先处理出的a[]数组保存的是当数组下标为i的时候,需要几根火柴模拟出来。为什么a数组要开2000呢?因为后来判断的时候要a[i+j],而i和j都是1000规模的,不开2000会RE。
然后我们打表处理出m数组,表示拼出数字,注意是数字i的时候需要几根火柴,然后就可以按位表示了。应该很简单。
最后判断,不用多说了。
注意要加4.
所以AC了:
#include<cstdio>
using namespace std;
int n,ans;
int a[2001];
int m[]={6,2,5,5,4,5,6,3,7,6};
int main()
{
scanf("%d",&n);
a[0]=6;
for(int i=1;i<=2000;i++)
for(int j=i;j>=1;j/=10)
a[i]=a[i]+m[j%10];
for(int i=0;i<=1000;i++)
for(int j=0;j<=1000;j++)
if(a[i]+a[j]+a[i+j]+2+2==n)
ans++;
printf("%d",ans);
return 0;
}
NOIP 2008 火柴棒等式的更多相关文章
- NOIP200806 火柴棒等式【B005】
[B005]火柴棒等式[难度B]———————————————————————————————————————————————————————————— [题目要求] 给你n根火柴棍,你可以拼出多少个 ...
- noip2008 火柴棒等式
P1149 火柴棒等式 1.9K通过 3.7K提交 题目提供者该用户不存在 标签搜索/枚举模拟2008NOIp提高组 难度普及- 提交该题 讨论 题解 记录 题目描述 给你n根火柴棍,你可以拼出多 ...
- 用Python写算法题--洛谷P1149 火柴棒等式
题目 题目来源 P1149 火柴棒等式,https://www.luogu.org/problem/P1149 题目描述 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式? ...
- C语言程序设计100例之(18):火柴棒等式
例18 火柴棒等式 用n根火柴棍,可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棒拼出的整数(若该数非零,则最高位不能是0).用火柴棒拼数字0~9的拼法如图1所示. 图1 用 ...
- 洛谷-火柴棒等式-NOIP2008提高组复赛
题目描述 Description 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: ...
- luogu P1149 火柴棒等式
题目描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注意: 加号与等号各自 ...
- [NOIP2008] 提高组 洛谷P1149 火柴棒等式
题目描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注意: 加号与等号各自 ...
- 【b802】火柴棒等式
Time Limit: 1 second Memory Limit: 50 MB [问题描述] 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式?等式中的A.B.C是用火柴 ...
- 火柴棒等式c++
先建立一个sum数组,打表存入1—9每个数字需要的火柴棒数,然后手动二重循环0—1000的所有数字,写一个int型函数用来计算每个数字需要多少根火柴棒(当前数字%10后在sum数组的下标),然后,最后 ...
随机推荐
- Ubuntu安装完搜狗后,更改ctrl+shift切换输入法
1.打开搜狗设置 2.更改Scroll between Input Method即可,我设置成了 ALT_SUPER(Win键)
- idea之导入Eclipse Maven项目
Idea之导入Eclipse Maven项目:https://blog.csdn.net/qq_33442160/article/details/81876428参考上述链接即可,这里不再赘述.
- bcrypt 加密算法
MD5 的特性 MD5 是一种加密算法,在调用这个算法的时候,提供一个密码的明文, 调用的结果,得到一个 32 位长度的密文: MD5 算法的特性:相同的字符串,如果多次调用 md5 算法,得到的结果 ...
- LeetCode 485:连续最大1的个数 Max Consecutive Ones(python java)
公众号:爱写bug 给定一个二进制数组, 计算其中最大连续1的个数. Given a binary array, find the maximum number of consecutive 1s i ...
- C#异步的世界【下】(转)
接上篇:<C#异步的世界[上]> 上篇主要分析了async\await之前的一些异步模式,今天说异步的主要是指C#5的async\await异步.在此为了方便的表述,我们称async\aw ...
- 删除链表中的倒数第N个节点
题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: ->->->->, 和 n = . 当删除了倒数第二个节点后,链表变为 -&g ...
- 【Luogu5348】密码解锁(莫比乌斯反演,数论)
[Luogu5348]密码解锁(莫比乌斯反演,数论) 题面 洛谷 题解 首先题目给定的限制是\(\sum_{n|i}a[i]=\mu(n)\),然后把这个东西反演一下, 莫比乌斯反演的式子是:\(g( ...
- 《Real World Haskell》内容脉络整理
p.s. 其实就是28–(6入门[1~4,6])-(10暂不用[17,20~28])=13网页啊! 1~ 6 章: 语法入门 (类型,函数,表达式语法糖,typeclass) 7~13章: 熟练/ ...
- 1-Consul系列文章
使用Consul做服务发现的若干姿势 Consul的反熵 [Consul]Consul架构-简介
- php配置出错,引发上传文件出错
今天在做文件上传的时候,按正常逻辑提交,可提交到服务器后,$_FILES['tmp_name']死活不对,表单的enctype="multipart/form-data" 这个也加 ...