题目链接:http://codeforces.com/problemset/problem/468/A

题目意思:给出一个数n,利用 1 ~ n 这 n 个数,每个数只能用一次,能否通过3种运算: +、-、* 使得最后的结果为24。

首先大方向想得是对的,就是用前面尽量连续的数构成24,而后面就通过相互抵消变成0,这样就不会影响到前面算出的结果。

但有两个地方比较致命,所以最终要看着test的数据改~~。首先没有留意到 n 个数操作的次数恰好为 n - 1 次!!(之前千辛万苦找到构成24的方法由于遗漏这个条件,几乎付诸东流啊~~)。其次,抵消方式不正确。我的抵消方式是通过 +1, -1,..., 相加来变成0的。这样意味着,除去前面那些能构成24的数(假设以k结尾),次数为k-1次,后面n-k个数,即 k+1, k+2,...,n,要 操作 n - k 次,但我这样的抵消方式操作的次数是得不出n-k的,而且还有个比较苛刻的条件,后面这n-k个数构成的对数一定要为偶数对(每对为两个),这样通过两两配对,次数就是(n-k)/4 * 3 (4表示每组看成连续的两对数,3表示每组数操作3次:  1,-1, 1-1 = 0)。

自从看了test3 的数据之后,一下子茅塞顿开啊~~~~

很容易知道,n < 4 是无解的 !!!

而1 2 3 4(操作3次,1*2,2*3,6*4) 是可以得出24的,1 2 3 4 5(看代码吧,只是其中一种构造方法) 也能构成24的!!那么剩下的数怎么办?剩下的数保证要操作n-k次。通过后一个减前一个数,得出1,再不断乘以 24,这样就大功告成啦^_^。而且这样做的好处是,不用为后面的有多少对 对数烦恼。试想,一个n个数的序列无非只有两种:最后一个数以奇数结尾或者以偶数结尾。奇数结尾自然调用 1 2 3 4 5 来构成24这个方法;而偶数结尾就用1 2 3 4 能构成24,这样就能保证 n - 4 或者 n - 5 之后的数能成对构成1,再与24相乘即可。

构造题就是那么考思维呀,但一般不难~~~~想了我大半天= =

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; int cnt;
inline void remain(int st, int end)
{
cnt = ; // 对数
for (int i = st+; i <= end; i += )
{
cnt++;
printf("%d - %d = 1\n", i, i-);
}
} inline void Output(int cnt)
{
for (int i = ; i < cnt; i++)
printf("24 * 1 = 24\n");
} int main()
{
int n;
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif // ONLINE_JUDGE while (scanf("%d", &n) != EOF)
{
if (n < )
printf("NO\n");
else
{
printf("YES\n");
if ((n-) % == )
{
printf("1 * 2 = 2\n");
printf("2 * 3 = 6\n");
printf("6 * 4 = 24\n");
remain(, n);
}
else
{
printf("3 * 5 = 15\n");
printf("2 * 4 = 8\n");
printf("15 + 8 = 23\n");
printf("23 + 1 = 24\n");
remain(, n);
}
Output(cnt);
} }
return ;
}

codeforces 468A. 24 Game 解题报告的更多相关文章

  1. Codeforces Round 665 赛后解题报告(暂A-D)

    Codeforces Round 665 赛后解题报告 A. Distance and Axis 我们设 \(B\) 点 坐标为 \(x(x\leq n)\).由题意我们知道 \[\mid(n-x)- ...

  2. Codeforces Round 662 赛后解题报告(A-E2)

    Codeforces Round 662 赛后解题报告 梦幻开局到1400+的悲惨故事 A. Rainbow Dash, Fluttershy and Chess Coloring 这个题很简单,我们 ...

  3. Codeforces Round #277.5 解题报告

    又熬夜刷了cf,今天比正常多一题.比赛还没完但我知道F过不了了,一个半小时贡献给F还是没过--应该也没人Hack.写写解题报告吧= =. 解题报告例如以下: A题:选择排序直接搞,由于不要求最优交换次 ...

  4. codeforces B. Simple Molecules 解题报告

    题目链接:http://codeforces.com/problemset/problem/344/B 题目意思:这句话是解题的关键: The number of bonds of an atom i ...

  5. codeforces A. Candy Bags 解题报告

    题目链接:http://codeforces.com/contest/334/problem/A 题意:有n个人,将1-n袋(第 i  袋共有 i  颗糖果,1<= i  <=n)所有的糖 ...

  6. codeforces 591A. Wizards' Duel 解题报告

    题目链接:http://codeforces.com/problemset/problem/591/A 题目意思:其实看下面这幅图就知道题意了,就是Harry 和 He-Who-Must-Not-Be ...

  7. codeforces 582A. GCD Table 解题报告

    题目链接:http://codeforces.com/problemset/problem/582/A 网上很多题解,就不说了,直接贴代码= = 官方题解: http://codeforces.com ...

  8. codeforces 581C. Developing Skills 解题报告

    题目链接:http://codeforces.com/problemset/problem/581/C 题目意思:给出 n 个数:a1, a2, ..., an (0 ≤ ai ≤ 100).给出值 ...

  9. codeforces 577B. Modulo Sum 解题报告

    题目链接:http://codeforces.com/problemset/problem/577/B 题目意思:就是给出 n 个数(a1, a2, ..., an) 和 m,问能不能从这 n 个数中 ...

随机推荐

  1. poj 3233 矩阵快速幂+YY

    题意:给你矩阵A,求S=A+A^1+A^2+...+A^n sol:直接把每一项解出来显然是不行的,也没必要. 我们可以YY一个矩阵: 其中1表示单位矩阵 然后容易得到: 可以看出这个分块矩阵的左下角 ...

  2. POJ3264 Balanced Lineup

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 44720   Accepted: 20995 ...

  3. 取出list的数组元素

    java中将list中的一维数组中的元素取出需要2步.第一步:获取list的迭代器,将数组从迭代器中遍历取出:第二部:对取出的数组进行遍历,取出数组中存储的元素.java的list集合中只能存储引用型 ...

  4. 《驾驭Core Data》 第三章 数据建模

    本文由海水的味道编译整理,请勿转载,请勿用于商业用途.    当前版本号:0.1.2 第三章数据建模 Core Data栈配置好之后,接下来的工作就是设计对象图,在Core Data框架中,对象图被表 ...

  5. UVA11400照明系统设计&& POJ1260Peals(DP)

    紫书P275: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=105116#problem/A POJ http://poj.org/pr ...

  6. angularJS学习1

    <!DOCTYPE html><html ng-app><head> <script src="http://code.angularjs.org/ ...

  7. Centos目录结构详细版

    使用linux也有一年多时间了  最近也是一直在维护网站系统主机  下面是linux目录结构说明 本人使用的是centos系统,很久没有发表博文了 近期会整理自己所用所了解知识点,发表linux相关的 ...

  8. CodeForces 701B Cells Not Under Attack

    题目链接:http://codeforces.com/problemset/problem/701/B 题目大意: 输入一个数n,m, 生成n*n的矩阵,用户输入m个点的位置,该点会影响该行和该列,每 ...

  9. 用JSON-server模拟REST API(三) 进阶使用

    用JSON-server模拟REST API(三) 进阶使用 前面演示了如何安装并运行 json server , 和使用第三方库真实化模拟数据 , 下面将展开更多的配置项和数据操作. 目录: 配置项 ...

  10. DOM: 如何获取元素下的第一个子元素

    Element.firstChild ?,是的,这是第一种方法,当然,通常来说支持 W3C 规范的浏览器,如 Firefox 等取到的应该是 TEXT_NODE.很早之前,或者说现在最流行的方法可能是 ...