[折腾笔记] 洛谷P1149-火柴棒等式 AC记
原题链接: https://www.luogu.org/problem/P1149
题面简述:
给你n根火柴棍,你可以拼出多少个形如“A+B=C”“A+B=C”“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:
注意:
- 加号与等号各自需要两根火柴棍
- 如果A≠B,则A+B=C与B+A=C视为不同的等式(A,B,C>=0)
- n根火柴棍必须全部用上
思路:
等式可能的情况:
x+y=zx + y = zx+y=z
xx+yy=zzxx+yy=zzxx+yy=zz
xxx+yyy=zzzxxx+yyy=zzzxxx+yyy=zzz
xxxx+yyyy=zzzzxxxx+yyyy=zzzzxxxx+yyyy=zzzz
为啥这么说呢?因为计算在极端条件n=24n = 24n=24,的情况下,最高位数是:
24÷2=1224\div 2=1224÷2=12 (如果全部摆111的话,可以摆121212个111) 12÷3=412\div 3=412÷3=4 一共有333个数,于是最多444位。
于是,我们大可枚举,因为枚举的话再加上优化,不会超时所以,就可以写出如下代码:
#include <bits/stdc++.h>
using namespace std;
int s[] = {6,2,5,5,4,5,6,3,7,6};
int t = 4;
int ans = 0;
bool judge(int a,int b,int c,int n) {
int p = 0;
string d = to_string(a),e = to_string(b),f = to_string(c);
for(int i = 0;i<d.length();++i) p+=s[d[i]-'0'];
for(int i = 0;i<e.length();++i) p+=s[e[i]-'0'];
for(int i = 0;i<f.length();++i) p+=s[f[i]-'0'];
if(p==n) {
return 1;
}
return 0;
}
int main() {
int n;
cin>>n;
n-=4;
for(int i = 0;i<=9999;++i) {
for(int j = 0;j<=9999;++j) {
int k = i+j;
if(i+j==k&&judge(i,j,k,n)) {
ans++;
}
}
}
cout<<ans<<endl;
}
另外之前还犯了个错误:
#include <bits/stdc++.h>
using namespace std;
int s[] = {6,2,5,5,4,5,6,3,7,6};
int t = 4;
int ans = 0;
bool judge(int a,int b,int c,int n) {
int p = 0;
string d = to_string(a),e = to_string(b),f = to_string(c);
for(int i = 0;i<d.length();++i) p+=s[d[i]-'0'];
for(int i = 0;i<e.length();++i) p+=s[e[i]-'0'];
for(int i = 0;i<f.length();++i) p+=s[f[i]-'0'];
if(p==n) {
return 1;
}
return 0;
}
int main() {
int n;
cin>>n;
n-=4;
for(int i = 0;i<=n;++i) {
for(int j = 0;j<=n;++j) {
int k = i+j;
if(i+j==k&&judge(i,j,k,n)) {
ans++;
}
}
}
cout<<ans<<endl;
}
这里只枚举到n不够。
[折腾笔记] 洛谷P1149-火柴棒等式 AC记的更多相关文章
- 用Python写算法题--洛谷P1149 火柴棒等式
题目 题目来源 P1149 火柴棒等式,https://www.luogu.org/problem/P1149 题目描述 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式? ...
- [NOIP2008] 提高组 洛谷P1149 火柴棒等式
题目描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注意: 加号与等号各自 ...
- 洛谷P1149 火柴棒等式
题目描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注意: 1.加号与等号 ...
- 洛谷 P1149 火柴棒等式
嗯.... 这道题好讨厌啊!!!! 一开始莫名RE,然后发现数组小了,然后发现后面几个点总是WA,原来推的少了.... 并且这道题的思路真的好水啊!! 先看一下题: 题目描述 给你n根 ...
- 洛谷P1149.火柴棒等式(暴力搜索)
题目描述 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注 ...
- (水题)洛谷 - P1149 - 火柴棒等式
https://www.luogu.org/problemnew/show/P1149 一开始还分类重复了.在非0的dfs中居然赋值了0,脑残得一笔. 其实就按 $lead0$ 分类就好了, $lea ...
- Java实现 洛谷 P1149 火柴棒等式
import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.S ...
- luogu P1149 火柴棒等式
题目描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注意: 加号与等号各自 ...
- (函数)P1149 火柴棒等式
题解: #include<stdio.h>int a[10]={6,2,5,5,4,5,6,3,7,6};int num(int n){ ...
随机推荐
- Python 中的for....else....
在一个for循环中,当循环遇到break语句之后程序就会跳出循环,执行for循环之后的语句:但是,当整个循环都没有遇上break语句,而且你想在这种情况下做一些事情的话,你就可以通过结合else来完成 ...
- jupyter qtconsole 的安装
Jupyter qtconsole最近开始研究人工智能算法,发现了一款基于python的科学计算的神器,jupyter qtconsole,简直就是ipython的加强版,每个命令都直接显示帮助信息, ...
- leetcode算法小题(1)
题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数 ...
- python基础-字典dict
字典-dict 用途: 定义方法:通过{} 来存储数据,通过key:value (键值对)来存储数据,每个键值对通过逗号分隔.在键值对中,key 是不可变的数据类型,value 是任意数据类型 def ...
- 通过 Django Pagination 实现简单分页
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 当博客上发布的文章越来越多时,通常需要进行分页显示,以免所有的文章都堆积在一个页面, ...
- vscode debug golang
基础的配置网上的教程很多,这里只是记录自己碰到的坑. 官方文档 https://code.visualstudio.com/docs/editor/debugging#_launch-configur ...
- RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)
好久没有继续分享关于自动化测试相关的东西了,自动化在现今的测试领域已经越来越重要了,大部分公司在测试岗位招聘中都需要会相关的自动化测试知识.而 RobotFramework自动化测试框架 是自动化测试 ...
- CSPS模拟 43
我这次把考试题改完了 T1 A 发现S*b必须和T模a同余? 貌似乘不了几次就爆T了?可以暴力? 也许乘的越多越好? 内心:切了 另外怎么设置鼠标指到黑块上边就显示字那种东西 最后当然是因为低错没有A ...
- docker showdoc安装
自动脚本安装 前言 自动脚本脚本利用docker来安装运行环境,适用于linux服务器.如果你的服务器没有docker服务,脚本会尝试安装之.安装docker的过程可能有些慢.如果你已经安装过dock ...
- 树莓派debian配置lamp[解决Apache不显示php网页]
Apache + MySql + Php. 1.安装Apache Apache可以用下面的命令来安装 sudo apt-get install apache2 Apache默认路径是/var/www/ ...