CF468A | 24 Game 找规律+打表
(翻译版本来自 Luogu by lonelysir )
题目描述
小X一直很喜欢一个纸牌游戏:“24点”,但最近他发现这个游戏太简单了,所以他发明了一个新游戏。
你有一个整数序列,包括n个整数:1,2,3,...,n。步骤很简单,你可以从其中拿出两个数,我们假设它们是a和b,将这两个数从序列中删除,并将a+b、a-b或a×b放入这个序列。
经过n−1次操作后,序列中只会剩下一个数,你能把这个数变成是24吗?
输入格式
一行,包括一个数n。 输出格式
如果可以经过操作计算出24,那么在第一行输出"YES",否则输出"NO"。
在可以的前提下,接下来的 \(n−1\) 行中,每行输出一个计算操作,形如 \("a~~op~~b~~=~~c"\),a和b表示你选择的数,而\(~op~\),则是你使用的计算符号(加、减或乘)。算式中 \(abs(c)\) 不会超过 \(|10^8|\)
输出格式
请注意输出的每个算式的字符与数字之间必须有空格。
如果你有多种解决的办法,输出任意一个即可
输入输出样例
输入 #1
1
输出 #1
NO
输入 #2
8
输出 #2
YES
8 * 7 = 56
6 * 5 = 30
3 - 4 = -1
1 - 2 = -1
30 - -1 = 31
56 - 31 = 25
25 + -1 = 24
——————————————————————————————————————————
想着练习一下暴搜搜到的题目,没想到是个规律题233
如果枚举每一种情况的话复杂度就上天了,于是我们开始挖掘题目的特殊性质。
注意到给出的\(~N~\)个整数,分别是\(~1、2、3……N~\)
而每连续的四个整数往往可以仅通过加减法组成\(~\),
例如,有四个连续整数:\(~8,9,10,11~\)
\(~10~+~9~-~8~-~11~=~0~\)
于是只要从数列的末尾开始四个四个地消除(\(0\)对答案没有贡献),直到剩余 \(4~-~7\) 个数
通过人脑的运算我们可以打表出\(N=4、5、6、7\)时的答案,然后汇总按照题目规范输出即可
PS:当\(~N=1、2、3~\)时无解,输出"\(~NO~\)"
辛苦写SPJ的人了
代码如下:
#include <bits/stdc++.h>
using namespace std;
int n;
int main() {
scanf("%d",&n);
if (n==1 || n==2 || n==3) { printf("NO"); return 0; }
printf("YES\n");
while (n>=8) {
//n n-1 n-2 n-3
printf("%d - %d = 1\n",n,n-1);
printf("%d - %d = -1\n",n-3,n-2);
printf("1 + -1 = 0\n");
printf("%d + 0 = %d\n",n-4,n-4);
n-=4;
}
if (n==4) {
printf("1 * 2 = 2\n");
printf("2 * 3 = 6\n");
printf("4 * 6 = 24");
}
else if (n==5) {
printf("3 + 4 = 7\n");
printf("7 + 5 = 12\n");
printf("12 * 2 = 24\n");
printf("24 * 1 = 24");
}
else if (n==6) {
printf("6 - 3 = 3\n");
printf("3 + 4 = 7\n");
printf("7 + 5 = 12\n");
printf("12 * 2 = 24\n");
printf("24 * 1 = 24");
}
else if (n==7) {
printf("7 - 6 = 1\n");
printf("3 + 4 = 7\n");
printf("7 + 5 = 12\n");
printf("12 * 2 = 24\n");
printf("24 * 1 = 24\n");
printf("24 * 1 = 24");
}
return 0;
}
其实好像分奇偶性讨论会更简单
CF468A | 24 Game 找规律+打表的更多相关文章
- HDU 4731 找规律,打表
http://acm.hust.edu.cn/vjudge/contest/126262#problem/D 分为3种情况,n=1,n=2,n>=3 其中需要注意的是n=2的情况,通过打表找规律 ...
- UVA 10706 Number Sequence (找规律 + 打表 + 查找)
Problem B Number Sequence Input: standard input Output: standard output Time Limit: 1 second A singl ...
- ACM-ICPC 2018 南京赛区网络预赛 - J. Sum (找规律+打表)
题意:\(f(i):i\)能拆分成两个数的乘积,且要求这两个数中各自都没有出现超过1次的质因子.每次给出n,求\(\sum_{i=1}^{n}f(i)\) 分析:\(1 \le n \le 2e7\) ...
- hdu 3032 Nim or not Nim? (sg函数打表找规律)
题意:有N堆石子,每堆有s[i]个,Alice和Bob两人轮流取石子,可以从一堆中取任意多的石子,也可以把一堆石子分成两小堆 Alice先取,问谁能获胜 思路:首先观察这道题的数据范围 1 ≤ N ...
- 计蒜客 39279.Swap-打表找规律 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest L.) 2019ICPC西安邀请赛现场赛重现赛
Swap There is a sequence of numbers of length nn, and each number in the sequence is different. Ther ...
- E - Fibonacci Again(找规律)
逐渐发现找规律的美妙之处啦,真不错,用普通方法解决很久或者很麻烦的问题,找到规律就很方便,算法最主要还是思想 Description There are another kind of Fibonac ...
- Codeforces Beta Round #24 D. Broken robot (打表找规律)
题目链接: 点击我打开链接 题目大意: 给你 \(n,j\),再给出 \(m[0]\) 的坐标和\(a[0]-a[n-1]\) 的坐标. 让你输出 \(m[j]\) 的坐标,其中 \(m[i]\) 和 ...
- 打表找规律C - Insertion Sort Gym - 101955C
题目链接:https://cn.vjudge.net/contest/273377#problem/C 给你 n,m,k. 这个题的意思是给你n个数,在对前m项的基础上排序的情况下,问你满足递增子序列 ...
- hdu 3032 Nim or not Nim? (SG函数博弈+打表找规律)
Nim or not Nim? Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Sub ...
随机推荐
- Jmeter之将测试结果导出到Excel
一:环境准备 1.下载jxl.jar这个jar包 2.下载好之后,放到Jmeter的安装路径下的lib目录下 3.jxl.jar的作用:完成对Excel的读写以及修改操作 如何利用jmter操作exc ...
- JavaScript实现计算后缀表达式(逆波兰表达式)以及将中缀表达式转为后缀表达式
逆波兰表达式,它的语法规定,表达式必须以逆波兰表达式的方式给出.逆波兰表达式又叫做后缀表达式.这个知识点在数据结构和编译原理这两门课程中都有介绍,下面是一些例子: 正常的表达式 逆波兰表达式 a+b ...
- qt creator源码全方面分析(2-10-1)
目录 Getting and Building Qt Creator 获取Qt 获取和构建Qt Creator Getting and Building Qt Creator 待办事项:应该对此进行扩 ...
- 中小企业自建云WAF有多难?只需20分钟!而且:全程免费!
以往,运营型的web为了安全目的,才使用WAF进行安全防护. 而现如今,WAF对企业web来说,已然成了刚需.为何?等保.网络安全法的硬性要求! 当然,这样要求显然是对的:没有网络安全,就没有国家安全 ...
- IP multicast IP多播
https://networklessons.com/multicast/multicast-routing/ IP多播有两种模式,密集模式和稀疏模式: Dense Mode Sparse Mode ...
- LVS 介绍 原理
一. LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtual ...
- Linux的那些事-系统启动(增加开机启动项)
1 /etc/init.d 2 /etc/inittab 3 /etc/rc.d/init.d 1. /etc/init.d 是一般开机的启动服务存放在这个目录下,至于实现机制,其实 ...
- 解决github图片不显示的问题
修改hosts C:\Windows\System32\drivers\etc\hosts 在文件末尾添加: # GitHub Start 192.30.253.112 Build software ...
- C++常见编程--获取当前系统时间
C++常见编程--获取当前系统时间 文章首发https://www.cppentry.com 本文主要使用time() 及strftime() 函数 C++系统和时间相关的函数基本上都是使用C语言提供 ...
- 智和网管平台SugarNMS网络综合监控等级保护安全解决方案
IT运维是一个很大的范畴,涉及到的部门.架构.技术.产品十分广泛.北京智和信通以等保标准为依据,依托丰富的网络安全行业经验,配套自主研发的智和网管平台SugarNMS,提升用户网络关键基础设施综合管理 ...