CodeForces - 468A 24 Game
Posted 晓风微微
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeForces - 468A 24 Game相关的知识,希望对你有一定的参考价值。
24点游戏大家应该很熟悉。通过加减乘除四则运算用四个数得到24。
现在考虑一个升级版的游戏:给定1...n这n个数,通过加、减、乘这三种运算得到24。
Input
一个正整数n,n<=100000
Output
如果有解,第一行输出"YES"
接下来n-1行,每行输出一个操作,形如"a op b = c" 。详情见样例。
无解则输出"NO"
注意:你的中间结果绝对值不得超过10^18
Sample Input
8
Sample Output
YES
8 * 7 = 56
6 * 5 = 30
3 - 4 = -1
1 - 2 = -1
30 - -1 = 31
56 - 31 = 25
25 + -1 = 24
1 #include<iostream> 2 using namespace std; 3 #include<cstring> 4 #include<cstdio> 5 #include<cmath> 6 #include<vector> 7 typedef long long ll; 8 void out(ll x,ll y,ll z,char c){ 9 printf("%I64d %c %I64d = %I64d\n",x,c,y,z); 10 } 11 int main(){ 12 ll n; 13 cin>>n; 14 if(n<4){ 15 printf("NO"); 16 return 0; 17 } 18 printf("YES\n"); 19 if(n==4){ 20 out(1,2,2,‘*‘); 21 out(2,3,6,‘*‘); 22 out(6,4,24,‘*‘); 23 } 24 else if((n&1)==0){ 25 out(1,2,2,‘*‘); 26 out(2,3,6,‘*‘); 27 out(6,4,24,‘*‘); 28 for(int i=n;i>4;i-=2){ 29 out(i,i-1,(long long)i-(i-1),‘-‘); 30 out(1,24,24,‘*‘); 31 } 32 } 33 else{ 34 out(3,4,12,‘*‘); 35 out(5,2,3,‘-‘); 36 out(3,1,2,‘-‘); 37 out(2,12,24,‘*‘); 38 if(n==5) 39 return 0; 40 for(int i=n;i>5;i-=2){ 41 out(i,i-1,(long long)i-(i-1),‘-‘); 42 out(1,24,24,‘*‘); 43 } 44 } 45 return 0; 46 }
以上是关于CodeForces - 468A 24 Game的主要内容,如果未能解决你的问题,请参考以下文章
CodeForces - 1538A Stone Game博弈