Codeforces Round #268 (Div. 2) C 24 Game

来源:互联网 发布:淘宝会员名大全简单 编辑:程序博客网 时间:2024/06/05 03:09

也是好久没有写博客,代码最近也少敲了。一直在学数学来着,前些天一场cf打下来又重新变为蓝名,写一下帮助我加了200多分的C题。

24game,看题目感觉就是24点这玩意,不过题目要求从1到n 用到所有的数字,包括中间结果,最后得出一个24.

因为1*2*3*4=24,所以4以下的必定是凑不够了。5是1+2*4+3*5=24,6可以是2-1+3*4+5+6=24,7是1-2+3+4+5+6+7=24;

肯定不能这样一直推到下去,题目中虽然给出了8的情况,但是毕竟是特判,当时猛然想到了8的情况可以变为:在4已经凑够24的基础上,5-6+8-7=0;同理可以得到9、10、11;然后每4个数字可以凑成一个0。那么4个一循环重复输出这样的式子就可以了。

#include<stdio.h>#include<string.h>void si(int n){int flag=0,fuck=0;puts("YES");int w=n-4;if(w==0) flag=0;else//这个部分主要是进行有多少次重复输出,因为中间结果要用上,所以判断是否会有0+1=1这个式子;{flag=1;while(w>0){if(fuck!=0)printf("0 + %d = %d\n",n-fuck,n-fuck);printf("%d - %d = -1\n",n-1-fuck,n-fuck);printf("%d - %d = 1\n",n-2-fuck,n-3-fuck);puts("-1 + 1 = 0");w=w-4;fuck+=4;}}if(flag)puts("0 + 1 = 1");puts("1 * 2 = 2");puts("2 * 3 = 6");puts("6 * 4 = 24");}void wu(int n){int flag=0,fuck=0;puts("YES");int w=n-4;if(w==1) flag=0;else{flag=1;while(w>1){if(fuck!=0)printf("0 + %d = %d\n",n-fuck,n-fuck);printf("%d - %d = -1\n",n-1-fuck,n-fuck);printf("%d - %d = 1\n",n-2-fuck,n-3-fuck);puts("-1 + 1 = 0");w=w-4;fuck+=4;}}if(flag)puts("0 + 1 = 1");puts("2 * 4 = 8");puts("1 + 8 = 9");puts("3 * 5 = 15");puts("9 + 15 = 24");}void liu(int n){int flag=0,fuck=0;puts("YES");int w=n-4;if(w==2) flag=0;else{flag=1;while(w>2){if(fuck!=0)printf("0 + %d = %d\n",n-fuck,n-fuck);printf("%d - %d = -1\n",n-1-fuck,n-fuck);printf("%d - %d = 1\n",n-2-fuck,n-3-fuck);puts("-1 + 1 = 0");w=w-4;fuck+=4;}}if(flag)puts("0 + 1 = 1");puts("3 * 4 = 12");puts("2 - 1 = 1");puts("1 + 12 = 13");puts("5 + 13 = 18");puts("18 + 6 = 24");}void qi(int n){int flag=0,fuck=0;puts("YES");int w=n-4;if(w==3) flag=0;else{flag=1;while(w>3){if(fuck!=0)printf("0 + %d = %d\n",n-fuck,n-fuck);printf("%d - %d = -1\n",n-1-fuck,n-fuck);printf("%d - %d = 1\n",n-2-fuck,n-3-fuck);puts("-1 + 1 = 0");w=w-4;fuck+=4;}}if(flag)puts("0 + 1 = 1");puts("1 - 2 = -1");puts("-1 + 3 = 2");puts("2 + 4 = 6");puts("6 + 5 = 11");puts("11 + 6 = 17");puts("17 + 7 = 24");}int main(){int n;scanf("%d",&n);if(n<4)puts("NO");else if(n%4==0)si(n);else if(n%4==1)wu(n);else if(n%4==2)liu(n);else if(n%4==3)qi(n);return 0;}


0 0
原创粉丝点击