(翻译版本来自 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 找规律+打表的更多相关文章

  1. HDU 4731 找规律,打表

    http://acm.hust.edu.cn/vjudge/contest/126262#problem/D 分为3种情况,n=1,n=2,n>=3 其中需要注意的是n=2的情况,通过打表找规律 ...

  2. UVA 10706 Number Sequence (找规律 + 打表 + 查找)

    Problem B Number Sequence Input: standard input Output: standard output Time Limit: 1 second A singl ...

  3. ACM-ICPC 2018 南京赛区网络预赛 - J. Sum (找规律+打表)

    题意:\(f(i):i\)能拆分成两个数的乘积,且要求这两个数中各自都没有出现超过1次的质因子.每次给出n,求\(\sum_{i=1}^{n}f(i)\) 分析:\(1 \le n \le 2e7\) ...

  4. hdu 3032 Nim or not Nim? (sg函数打表找规律)

    题意:有N堆石子,每堆有s[i]个,Alice和Bob两人轮流取石子,可以从一堆中取任意多的石子,也可以把一堆石子分成两小堆 Alice先取,问谁能获胜 思路:首先观察这道题的数据范围  1 ≤ N ...

  5. 计蒜客 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 ...

  6. E - Fibonacci Again(找规律)

    逐渐发现找规律的美妙之处啦,真不错,用普通方法解决很久或者很麻烦的问题,找到规律就很方便,算法最主要还是思想 Description There are another kind of Fibonac ...

  7. Codeforces Beta Round #24 D. Broken robot (打表找规律)

    题目链接: 点击我打开链接 题目大意: 给你 \(n,j\),再给出 \(m[0]\) 的坐标和\(a[0]-a[n-1]\) 的坐标. 让你输出 \(m[j]\) 的坐标,其中 \(m[i]\) 和 ...

  8. 打表找规律C - Insertion Sort Gym - 101955C

    题目链接:https://cn.vjudge.net/contest/273377#problem/C 给你 n,m,k. 这个题的意思是给你n个数,在对前m项的基础上排序的情况下,问你满足递增子序列 ...

  9. hdu 3032 Nim or not Nim? (SG函数博弈+打表找规律)

    Nim or not Nim? Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Sub ...

随机推荐

  1. 不同宿主的iterator不能进行比较

    int main() { string str1, str2; auto it1 = str1.begin(), it2 = str2.begin(); it1 == it2; ; }

  2. 17-SSM中通过pagehelper分页的实现

    SSM中通过pagehelper分页的实现 1. 在SSM框架的基础上实现,导包 <!-- 分页 --> <dependency> <groupId>com.git ...

  3. Java开发最佳实践(二) ——《Java开发手册》之"异常处理、MySQL 数据库"

    二.异常日志 (一) 异常处理 (二) 日志规约 三.单元测试 四.安全规约 五.MySQL数据库 (一) 建表规约 (二) 索引规约 (三) SQL语句 (四) ORM映射 六.工程结构 七.设计规 ...

  4. gitlab(五):一个开发流程实例

    一个多人开发的样例 开发的流程我们都知道: 根据项目版本,创建里程碑,创建开发的issue,分配给dev dev从master clone代码,创建分支就行开发,开发完成之后,提交分支 dev给开发负 ...

  5. [Python]判断变量类型是否为List列表

    用法:isinstance(变量,list) li = [1,2,3] print(type(li)) if isinstance(li,list): print("This is a Li ...

  6. [Wpf学习] 1.传说中的Main

    原来的C#程序都有Main的,现在用vs新建一个Wpf项目,启动似乎变成App.xmal,前期项目中为了获取启动参数,很是折腾了一番: 1.先是修改App.xaml,添加StartUp事件 <A ...

  7. LINUX系统(CentOS7安装)一之JDK8的安装

    JDK 的安装系统安装就不做过多介绍,大家从网上寻找安装步骤进行安装,不过我推荐大家进行安装时选择桌面图形化格式进行安装,方便做一部分操作,同时在安装过程中选择英文模式,同时我自己在安装的过程中发现使 ...

  8. 《手把手教你构建自己的 Linux 系统》学习笔记(9)

    目录 autoreconf 命令的作用是什么? aclocal automake -a autoconf 一条命令搞完三面三步 既然有其他的「编译控制软件」为何还是使用 make 来进行编译控制? M ...

  9. 接口文档word版

    一. 分类中某某某接口 接口说明: 请求URL: http://120.26.212.11:8199/xhcms/catalogFirst 请求参数说明: 参数名 必选 类型 参数说明 返回: {&q ...

  10. PRML学习准备

    因为很怕PRML课程,所以想提前学习下做点准备. 看的一个学习内容就是python数据处理那本书,比较仔细地学习了 numpy,大致看了pandas和 matplotlib ,有以下几点感受 nump ...