原题链接: https://www.luogu.org/problem/P1149

题面简述:

给你n根火柴棍,你可以拼出多少个形如“A+B=C”“A+B=C”“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根火柴棍必须全部用上

思路:

等式可能的情况:

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不够。

最新文章

  1. Linux indent
  2. ArrayList数组列表
  3. DOM之表格与表单基础分享
  4. ios 关于文件操作 获取 文件大小
  5. WinForm设置窗体默认控件焦点
  6. 转:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确 .
  7. Servlet、Filter 生命周期
  8. Ubuntu使用apt-get安装本地deb包
  9. 大型分布式C++框架《四:netio之请求包中转站 上》
  10. U3d 手游优化概述
  11. 华为G520联通版刷机包 基于MIUI CM11新 平稳 稳定
  12. Springboot 系列(七)Spring Boot web 开发之异常错误处理机制剖析
  13. 2.5 time 模块
  14. 基于mpvue搭建微信小程序
  15. Navicat for MYSQL 数据库手动同步方法
  16. 关于python 自带csv库的使用心得 附带操作实例以及excel下乱码的解决
  17. 更新 是 可用的 针对 安卓 软件开发包和工具 Updates are available for android software development packages and tools
  18. 第四篇——Spring音乐登录界面设计及实现(C#)
  19. HTML5游戏引擎排行榜
  20. Java实现聚类算法k-means

热门文章

  1. video3
  2. Spring为IOC容器注入Bean的五种方式
  3. IIS中如何设置域名
  4. 暑期集训20190725 加法(add)
  5. vimrc备个份
  6. 路由传参 query 和 params
  7. 关于Set和Map数据结构的一点学习
  8. 通过cmd命令查看Python库、函数和模块的帮助文档与介绍
  9. 字符串模拟大数相加——Java实现
  10. MySQL系列:一句SQL,MySQL是怎么工作的?