Little X used to play a card game called "24 Game", but recently he has found it too easy. So he invented a new game.
Initially you have a sequence of n integers: 1, 2, ..., n. In a single step, you can pick two of them, let's denote them a and b, erase them from the sequence, and append to the sequence either a + b, or a - b, or a × b.
After n - 1 steps there is only one number left. Can you make this number equal to 24?
The first line contains a single integer n (1 ≤ n ≤ 105).
If it's possible, print "YES" in the first line. Otherwise, print "NO" (without the quotes).
If there is a way to obtain 24 as the result number, in the following n - 1 lines print the required operations an operation per line. Each operation should be in form: "a op b = c". Where a and b are the numbers you've picked at this operation; op is either "+", or "-", or "*"; c is the result of corresponding operation. Note, that the absolute value of c mustn't be greater than 1018. The result of the last operation must be equal to 24. Separate operator sign and equality sign from numbers with spaces.
If there are multiple valid answers, you may print any of them.
1
NO
8
YES 8 * 7 = 56 6 * 5 = 30 3 - 4 = -1 1 - 2 = -1 30 - -1 = 31 56 - 31 = 25 25 + -1 = 24
题意:
给出 N(1 ~ 100000),代表有一个 1 ~ N 的数列的数给你用,每次挑出来两个数,进行 a + b 或者 a * b 或者 a - b,将得数加入到数列中,问能否找出一种方法满足最后数列只存在一个数 24,不能则输出 NO,能则输出 YES,且输出运算过程。
思路:
数学构造。写出来会发现,1 ~ 3 是不可能构成的,根据 4 和 5 两个特殊的序列构成之后,后面的数可以运用 ai - ai-1 = 1 ,1 * 24 = 24,这样的式子来构造出解,最后输出即可。
AC:
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int main() { int n; scanf("%d", &n); if (n <= 3) printf("NO\n"); else { printf("YES\n"); int m; if (n % 2) m = n - 5; else m = n - 4; m /= 2; for (int i = 1; i <= m; ++i) { printf("%d - %d = 1\n", n, n - 1); n -= 2; } if (n == 5) { printf("5 - 2 = 3\n"); printf("3 - 1 = 2\n"); printf("4 * 3 = 12\n"); printf("12 * 2 = 24\n"); } else { printf("1 * 2 = 2\n"); printf("2 * 3 = 6\n"); printf("6 * 4 = 24\n"); } for (int i = 1; i <= m; ++i) { printf("1 * 24 = 24\n"); } } return 0; }
相关推荐
《生命游戏》(The Game of Life),又称为“康威生命游戏”,是由数学家约翰·何顿·康威(John Horton Conway)在1970年提出的细胞自动机理论的一个著名例子。这个游戏并非传统意义上的“游戏”,而是一个展示复杂...
接下来是计算机科学基础知识的学习,这包括算法、数据结构、计算机程序的构造与解释(SICP)、计算机系统概论(CSAPP)、计算机架构、现代操作系统等。通过学习这些基础知识,程序员能够建立起对计算机工作原理的...
- **平面**:介绍了如何构造和操作平面,以及如何确定点与平面的关系,这对于碰撞检测等场景非常重要。 - **D3DXPLANE结构**:DirectX中用于表示平面的特殊数据结构,提供了平面的方程形式和操作方法。 - **空间关系...
"Prime_game:Prime的AdGame-构造2" 是一个基于JavaScript开发的游戏项目,旨在通过游戏化的方式探索和学习关于素数(Prime)的数学概念。在这个项目中,开发者使用JavaScript作为主要编程语言,构建了一个互动式的...
- **D3DXVECTOR3类**: 介绍了D3DXVECTOR3类的定义和构造函数,以及如何使用该类表示三维空间中的向量。 - **向量运算**: 包括向量加法、减法、点积、叉积等运算的实现方法。 - **矩阵类**: 介绍如何使用D3DX库中的...
- **3D Math Primer for Graphics and Game Development 2nd Ed(2011)**:介绍3D图形学中常用的各种数学工具。 ### 六、游戏编程 - **3D Game Programming for Kids(2013)**:针对青少年的3D游戏编程入门书籍。 - ...
生命游戏,全称为“Game Of Life”,是由英国数学家约翰·康威(John Horton Conway)在1970年提出的一种简单的模拟生物演化的计算模型,它是细胞自动机的一个经典实例。细胞自动机是一种在离散空间和离散时间上的...
生命游戏,也简称为生命,是由英国数学家约翰·霍顿·康威(John Horton Conway)于1970年设计的一种细胞自动机。它是零玩家游戏,意味着其进化取决于其初始状态,不需要进一步的输入。 通过创建初始配置并观察其...
《生命游戏》(Game of Life),是由英国数学家约翰·康威(John Horton Conway)于1970年提出的著名细胞自动机模型,它是一种简单的模拟生物演化过程的游戏。在这个游戏中,每个细胞根据其周围细胞的状态遵循一套简单的...
库中的四元数类可能包含了从旋转轴和角度构造四元数、解算旋转轴和角度、以及进行插值(slerp)等方法。 SIMD是处理器的一种优化技术,能够同时处理多个数据,提升向量和矩阵运算的速度。Swift的SIMD库提供了一组...
【C++24点扑克牌游戏】是一种基于数学和逻辑思维的娱乐活动,目标是通过四张1到13的扑克牌,利用加减乘除运算符和括号,求得24的表达式。本实验旨在实现一个C++程序,能够自动找到满足条件的所有解。 **实验设计...
生命游戏,也简称为生命,是由英国数学家约翰·霍顿·康威(John Horton Conway)于1970年设计的一种细胞自动机。它是零玩家游戏,意味着其进化取决于其初始状态,不需要进一步的输入。 通过创建初始配置并观察其...
【Java Chaos Game噪声游戏】是一种利用随机性生成分形图像的算法,它基于数学上的混沌理论。在这个游戏中,通常以Sierpinski三角形为例,通过简单的规则来生成复杂的图形。下面将详细介绍这个概念以及提供的Java...
本书的第一部分重点介绍了进行三维游戏编程所必需的数学基础知识。这部分内容是理解后续章节的基础,包括向量、矩阵以及它们在三维空间中的应用。 ##### 向量 向量是三维空间中最基本的概念之一,用于表示方向和...
生命游戏,也简称为生命,是由英国数学家约翰·霍顿·康威(John Horton Conway)于1970年设计的一种细胞自动机。它是零玩家游戏,意味着其进化取决于其初始状态,不需要进一步的输入。通过创建初始配置并观察其演变...
【标题】"GAME:地面变形建模-matlab开发"涉及的是使用MATLAB编程语言创建一个专门用于地质变形分析的软件工具。MATLAB是MathWorks公司开发的一种强大的数值计算和数据可视化平台,广泛应用于工程、科学和数学领域。...