Time Limit: 1 second
Memory Limit: 50 MB

【问题描述】

给你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根火柴棍必须全部用上
【输入】

共一行,有一个整数n(n<=24)

【输出】

共一行,表示能拼成的不同等式的数目。

【输入样例1】

14

【输出样例1】

2

【输入输出样例1解释】

2个等式为0+1=1和1+0=1。

【输入样例2】

18

【输出样例2】

9

【输入输出样例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

【题解】

因为要减去一个等号一个加号;
所以最多n=20来组成所有的数字;
而数字消耗火柴棒最少的数字是1->消耗2根火柴棒;
则可以最多出现10个1;
然后分配到3个数字上;
则让C=4个1;A和B分别分配3个1;
如果C有5个1,则A也必须有5个1;
因为A+B=C这个式子C的位数最大是A和B的位数中最大的位+1;
然而A的位数为4的话,都是1,剩下1个数字,也没办法进位;
而A是5个1的话,B是0的话得增加6个棒。。
显然C位数最大不能超过4..
(以上是针对全是1的情况,显然这种情况的C是最大的,则其他情况也适用了);
而N=1000的话
O(N^2)是可以承受的;
枚举C然后再枚举B,再通过相减得到A就可以了;
用个函数计算某个数字要多少个棒棒.

【完整代码】

#pragma comment(linker,"/STACK:10240000000,10240000000")
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <set>
#include <map>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <vector>
#include <stack>
#include <string>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se secondtypedef pair<int,int> pii;
typedef pair<LL,LL> pll;void rel(LL &r)
{r = 0;char t = getchar();while (!isdigit(t) && t!='-') t = getchar();LL sign = 1;if (t == '-')sign = -1;while (!isdigit(t)) t = getchar();while (isdigit(t)) r = r * 10 + t - '0', t = getchar();r = r*sign;
}void rei(int &r)
{r = 0;char t = getchar();while (!isdigit(t)&&t!='-') t = getchar();int sign = 1;if (t == '-')sign = -1;while (!isdigit(t)) t = getchar();while (isdigit(t)) r = r * 10 + t - '0', t = getchar();r = r*sign;
}const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int num[10] = {6,2,5,5,4,5,6,3,7,6};int n;
int ans = 0;int f(int x)
{if (x==0) return num[x];int t = x;int tot = 0;while (t>0){tot+=num[t%10];t/=10;}return tot;
}int main()
{//freopen("F:\\rush.txt","r",stdin);cin >> n;n-=4;rep1(i,0,1111)rep1(j,0,i){int k = i-j;if (f(k)+f(j)+f(i)==n)ans++;}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/AWCXV/p/7626855.html

【b802】火柴棒等式相关推荐

  1. 蓝桥云算法题之火柴棒等式——Python满分解答

    火柴棒等式 题目描述 图片描述 输入描述 输出描述 输入输出样例 示例 1 输入 输出 样例解释 示例 2 输入 输出 样例解释 解题思路 代码实现 题目描述 给你 n 根火柴棍,你可以拼出多少个形如 ...

  2. P1149 火柴棒等式

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

  3. HNUST OJ 2294 火柴棒等式3.0

    问题 K: 火柴棒等式3.0 时间限制: 1 Sec  内存限制: 128 MB 题目描述 给定一个由火柴棒组成的算式,问:是否能够移动一根火柴棒使算式成立.例如:5+7=7,可以通过移动一根火柴变成 ...

  4. “火柴棒等式”【题解】

    "火柴棒等式"的题目 题目 题目描述 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能 ...

  5. [NOIP2008] 火柴棒等式

    220. [NOIP2008] 火柴棒等式 ★   输入文件: matches.in   输出文件: matches.out    简单对比 时间限制:1 s   内存限制:128 MB [问题描述] ...

  6. P1149 [NOIP2008 提高组] 火柴棒等式——暴力枚举

    [NOIP2008 提高组] 火柴棒等式 题目描述 给你 n n n 根火柴棍,你可以拼出多少个形如 A + B = C A+B=C A+B=C 的等式?等式中的 A A A. B B B. C C ...

  7. c语言 火柴加法,C语言程序设计100例之(18):火柴棒等式

    例18   火柴棒等式 用n根火柴棍,可以拼出多少个形如"A+B=C"的等式?等式中的A.B.C是用火柴棒拼出的整数(若该数非零,则最高位不能是0).用火柴棒拼数字0~9的拼法如图 ...

  8. 火柴棒等式(洛谷P1149题题解,Java语言描述)

    题目要求 P1149题目链接 分析 看起来要搜索,但何必呢?不搜也行啊~ 其实我们预先把每一位的数值(0~9)算出来就好,分别是这样的: key = 0, value = 6 key = 1, val ...

  9. 火柴棒等式(洛谷-P1149)

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

最新文章

  1. es6之扩展运算符...
  2. 全能无线渗透测试工具,一个LAZY就搞定了
  3. PyTorch基础(part8)--LSTM
  4. PAT乙:1009 说反话
  5. linux 目录 读写,Linux C 文件与目录3 文件读写(示例代码)
  6. sqlalchemy limitorder
  7. 强化学习的数学基础3---Q-Learning
  8. 代码只要写得多,就能成为顶尖的架构师?
  9. 测者的测试技术手册:Junit单元测试遇见的一个枚举类型的坑(枚举类型详解)...
  10. atitit. 浏览器插件 控件 applet 的部署,签名总结 浏览器 插件 控件 的签名安全机制o9o
  11. 2022华为软件精英挑战赛——梯度方法
  12. Unity使用中文包
  13. 一款好用的三维贴图纹理制作软件:Substance Designer Mac 内附安装教程
  14. 标签打印软件如何设置单排标签纸尺寸
  15. IM“扫一扫”功能很好做?看看微信“扫一扫识物”的完整技术实现
  16. 在国内外市场均遭遇挫折的OPPO和vivo该反思了
  17. 学习资料分享——java视频教程及电子书免费下载
  18. CSS(列表+表格+链接+自定义鼠标光标)样式
  19. 现在完成时与其他时态的区别
  20. java国际象棋_chess 一个用JAVA编写的国际象棋的程序 - 下载 - 搜珍网

热门文章

  1. (赛后补题)Gym - 101020 H H - Weekend
  2. 解决CoLab上传数据集失败或速度慢的问题
  3. 把PPT文字转换成Word文档的四个技巧
  4. 华为nova5i pro鸿蒙,华为P50pro全球首发鸿蒙系统!
  5. 华为云HE2E devops 敏捷开发实践课程——笔记总结
  6. 代码混淆的原理是什么?常见代码混淆方法介绍
  7. Android记事本——记事本记事列表页实现
  8. 《终结者2018》——观后感
  9. HTML<noscript> 标签
  10. 备战全国电子设计大赛-自制STM32F103C8T6核心板