首页 > 其他分享 >「杂题乱刷」CF468A

「杂题乱刷」CF468A

时间:2023-11-23 20:45:52浏览次数:57  
标签:24 相减 CF468A 剩下 依次 杂题 sim

原题链接

CF468A 24 Game

题目简述

现在有一个序列 \(n\) 包含 \(n\) 个整数 \(1 \sim n\),如果我们能经过加减乘三种操作让这个序列只剩下 \(24\),如果可以,输出 YES 并给出构造方案,否则输出 NO

解题思路

首先不难看出,如果 \(n\) 小于 \(4\) 的话,那么是一定不能构造出方案的,因为无论你怎么操作,结果都不可能大于 \(24\),但是当 \(n\) 大于等于 \(4\) 的时候,那么是一定能构造出方案的,证明如下:

  1. 如果 \(n\) 为奇数,那么只需要用 \(1 \sim 5\) 凑出 \(24\),然后再把剩下没操作过的相邻的数依次相减,再与 \(24\) 相乘即可;
  2. 如果 \(n\) 为偶数,那么只需要用 \(1 \sim 4\) 凑出 \(24\),然后再把剩下没操作过的相邻的数依次相减,再与 \(24\) 相乘即可。

以下是 \(1 \sim 4\) 和 \(1 \sim 5\) 凑 \(24\) 点的方法:

\(1 \sim 4\):

1*2=2 2*3=6 6*4=24

\(1 \sim 5\):

2*4=8 3*5=15 15+8=23 23+1=24

参考代码

#include<bits/stdc++.h>
using namespace std;
#define QwQ return 0;
long long n;
int main()
{
	cin>>n;
	if(n<=3)//如果n小于4
	{
		cout<<"NO";//直接输出NO
		return 0;
	}
	else//如果n大于等于4
	{
		cout<<"YES"<<endl;//输出YES
		if(n%2)//如果n为奇数
		{
			cout<<"2 * 4 = 8"<<endl<<"3 * 5 = 15"<<endl<<"15 + 8 = 23"<<endl<<"23 + 1 = 24"<<endl;
			for(int i=n;i>5;i-=2)//将剩下的数依次相减
				cout<<i<<" - "<<i-1<<" = "<<"1"<<endl<<"24 * 1 = 24"<<endl;			
		}
		else//如果n为偶数
		{
			cout<<"1 * 2 = 2"<<endl<<"2 * 3 = 6"<<endl<<"4 * 6 = 24"<<endl;
			for(int i=n;i>4;i-=2)//将剩下的数依次相减
				cout<<i<<" - "<<i-1<<" = "<<"1"<<endl<<"24 * 1 = 24"<<endl;
		}
	}
	QwQ;
}

标签:24,相减,CF468A,剩下,依次,杂题,sim
From: https://www.cnblogs.com/wangmarui/p/17852445.html

相关文章

  • 「杂题乱刷」洛谷P9515
    原题链接P9515「JOC-1A」限时签到题意简述有一条公路上有\(n\)个商店,每个商店分别在不同的时刻开放,求如何在\(t\)时刻之前到达\(f\)点并且到达最多开放的商店的数量,特别的,一个时刻只能走一格。解题思路这一道题是一道贪心题。首先,因为要在\(t\)时刻之前到达\(f\)......
  • 「杂题乱刷」CF283A
    原题链接CF283ACowsandSequence题目简述给定一个初始为空的序列\(a\),并给出\(3\)种操作方式:将\(a_1\sima_x\)均加上\(y\);将\(a\)序列末尾增加一个正整数\(x\);将\(a\)序列的最后一个数字给去掉;现在要求你求出进行每一次操作后的序列\(a\)的所有数......
  • 「杂题乱刷」洛谷P9253
    题目链接P9253[PA2022]Ornitolog2题目简述给定一个音高序列,输出最少要修改多少整数才能使这个序列成为交替鹡鸰鸟鸣的音高序列。题意分析操作后的音高序列总共有\(2\)种可能:音量由高变低再由低变高;音量由低变高再由高变低。又因为大小范围是\(10^4\times5......
  • 10月杂题
    还是得写写杂题,初三赛季说明这对我是buff啊。这次CSP-S再次检验王者是超级debuff!!!1.P7830[CCO2021]ThroughAnotherMazeDarkly感受一下,每次从根开始绕一圈回去,这个圈会越来越大,直到大小变成\(n-1\)。考虑求出每个边在最后一个圈内入和出的时间(就是欧拉序),你会发现每......
  • 11月杂题
    1.10.30D/qoj6794SequencetoSequence先观察到我们一定是先减后加。因为对于一个数+1-1一定不会改变,但-1+1就会有改变。那对于相邻的+1-1操作,如果不交就直接交换;否则把相交的部分直接删掉,那要么删成两个+1,要么成两个-1,要么是不交的+1-1。如果我们指定一个数减......
  • 9月杂题
    为什么19号了才开始写杂题1.ZJOI2018胖考虑一个新增边能松哪些点。它会被其它新增边影响。感受一下,松的范围一定是一个区间。如果\(|x-x_i|>|x-x_j|\)且\(b_i+|s_x-s_{x_i}|>b_j+|s_x-s_{x_j}|\),\(i\)就松不到\(j\)。二分边界,RMQ判断即可。以左端点为例,\([mid,i]\)......
  • 2023-11-17 杂题乱写
    倍增的英语怎么说。TasksbelowarefinishedyesterdayinYuhuiChe'sroom(Whenhewaswatchinguglygirls.).I'llwritethesolutioninthisblogbecausethecodingworkwasaccomplishedjustnow.CF461ENoBinarySearch.Iflettersin\(\{A,B,C,D\}\......
  • 2023.11.16 近期杂题
    CF1794E我们现在考虑换根dp,维护每个点为根的深度集合。考虑哈希,我们令深度为\(d\)的点贡献是\(base^d\)。那么,\(f_u=1+\sumf_v\timesbase\)。换根时容易的。由于题目给的是大小为\(n-1\)的集合,我们判断两个集合哈希值的差是否是\(base\)的幂即可。CF1799G考虑容斥......
  • 2023.11.12 近期杂题
    CF1657E发现充要条件即为对于每个点\(i\),其与\(1\)的连边为其所有连边中最小的。这\(dp_{i,j}\)表示处理了\(i\)个点,当前与\(1\)连的最大的边长度是\(j\)。\(dp_{i,j}=\sum_{t=1}^{i-1}(\sum_{x=0}^{j-1}dp_{t,x})\timesC_{n-t}^{i-t}\times(k-j+1)^{(i+t-3)(i-t)/......
  • 【杂题乱写】AtCoder-ARC116
    AtCoder-ARC116_CMultipleSequences朴素DP是设\(f_{i,j}\)表示第\(i\)个位置填\(j\)的方案数,时间复杂度\(O(n^2\logV)\)。考虑求出元素都不同序列个数,再根据长度乘组合数,这样长度是\(O(\logV)\)的,复杂度\(O(n\log^2V)\)。提交记录:Submission-AtCoder......