hdu 5308 (2015多校第二场第9题)脑洞模拟题,无语

题目链接:http://acm.hdu.edu.cn/listproblem.php?vol=44

题意:给你n个n,如果能在n-1次运算之后(加减乘除)结果为24的输出n-1次运算的过程,如果不能输出-1。

思路:乍看起来,没什么规律,但是可以想象的是(n+n+n+n)/n=4,(n+n+n+n+n+n)/n=6,(n-n)*n*n*·····*n=0所以在n大于15的时候结果基本是固定的,只要对小于15的数一一输出就行(但是这题真是无语,算这种题目真是累,脑洞啊~~)

代码:

 

  1 #include <cstdio>
  2 #include <cstdlib>
  3 #include <cmath>
  4 #include <cstring>
  5 #include <iostream>
  6 #include <queue>
  7 #include <algorithm>
  8 #include <vector>
  9 using namespace std;
 10 #define LL __int64
 11 
 12 int main()
 13 {
 14     int n,i;
 15     while(~scanf("%d",&n))
 16     {
 17         if(n<4)
 18             printf("-1\n");
 19         else if(n==4)
 20         {
 21             printf("1 * 2\n");
 22             printf("5 + 3\n");
 23             printf("6 + 4\n");
 24         }
 25         else if(n==5)
 26         {
 27             printf("1 / 2\n");
 28             printf("6 / 3\n");
 29             printf("4 - 7\n");
 30             printf("5 * 8\n");
 31         }
 32         else if(n==6)
 33         {
 34             printf("1 + 2\n");
 35             printf("7 + 3\n");
 36             printf("8 + 4\n");
 37             printf("9 + 5\n");
 38             printf("10 - 6\n");
 39         }
 40         else if(n==7)
 41         {
 42             printf("1 / 2\n");
 43             printf("3 * 4\n");
 44             printf("9 - 8\n");
 45             printf("5 + 6\n");
 46             printf("10 / 11\n");
 47             printf("12 * 7\n");
 48         }
 49         else if(n==8)
 50         {
 51             printf("1 - 2\n");
 52             printf("9 * 3\n");
 53             printf("10 * 4\n");
 54             printf("11 * 5\n");
 55             printf("12 + 6\n");
 56             printf("13 + 7\n");
 57             printf("14 + 8\n");
 58         }
 59         else if(n==9)
 60         {
 61             printf("4 / 5\n");
 62             printf("6 / 7\n");
 63             printf("8 / 9\n");
 64             printf("1 + 2\n");
 65             printf("13 + 3\n");
 66             printf("14 - 10\n");
 67             printf("15 - 11\n");
 68             printf("16 - 12\n");
 69         }
 70         else if(n==10)
 71         {
 72             printf("1 / 2\n");
 73             printf("3 / 4\n");
 74             printf("5 / 6\n");
 75             printf("7 / 8\n");
 76             printf("9 + 10\n");
 77             printf("11 + 12\n");
 78             printf("16 + 13\n");
 79             printf("17 + 14\n");
 80             printf("18 + 15\n");
 81         }
 82         else if(n==11)
 83         {
 84             printf("1 + 2\n");
 85             printf("3 / 4\n");
 86             printf("5 / 6\n");
 87             printf("12 + 13\n");
 88             printf("15 + 14\n");
 89             printf("7 - 8\n");
 90             printf("17 * 9\n");
 91             printf("18 * 10\n");
 92             printf("19 * 11\n");
 93             printf("20 + 16\n");
 94         }
 95         else if(n==12)
 96         {
 97             printf("1 + 2\n");//13
 98             printf("13 / 3\n");//14
 99             printf("14 * 4\n");//15
100             printf("5 - 6\n");//16
101             for(i=7;i<13;i++)
102                 printf("%d * %d\n",i,i+9);
103             printf("15 + 22\n");
104         }
105         else if(n==13)
106         {
107             printf("1 + 2\n");//14
108             printf("14 / 3\n");//15
109             printf("4 / 5\n");//16
110             printf("6 - 16\n");//17
111             printf("15 * 17\n");//18
112             printf("7 - 8\n");//19
113             for(i=9;i<14;i++)
114                 printf("%d * %d\n",i,i+10);
115             printf("18 + 24\n");
116         }
117 
118         else if(n==14)
119         {
120             printf("1 / 2\n");//15
121             printf("3 / 4\n");//16
122             printf("5 - 15\n");//17
123             printf("17 - 16\n");//18
124             printf("6 + 7\n");//19
125             printf("19 / 8\n");//20
126             printf("20 * 18\n");//21
127             printf("9 - 10\n");//22
128             for(i=11;i<15;i++)
129                 printf("%d * %d\n",i,i+11);
130             printf("21 + 26\n");
131         }
132         else
133         {
134             printf("1 + 2\n");
135             printf("3 + 4\n");
136             printf("5 + 6\n");
137             printf("7 + 8\n");
138             printf("%d + 9\n",n+1);
139             printf("%d / 10\n",n+2);
140             printf("%d / 11\n",n+3);
141             printf("%d / 12\n",n+4);
142             printf("%d / 13\n",n+5);
143             printf("%d * %d\n",n+6,n+7);
144             printf("%d * %d\n",n+8,n+9);
145             printf("%d * %d\n",n+10,n+11);
146             printf("14 - 15\n");
147             int now=n+13;
148             for(i=16;i<=n;i++)
149             {
150                 printf("%d * %d\n",i,now);
151                 now++;
152             }
153             printf("%d + %d\n",n+12,now);
154         }
155     }
156     return 0;
157 }
View Code

 

posted @ 2015-07-24 19:12  星陨之泪  阅读(394)  评论(0编辑  收藏  举报