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

来源:互联网 发布:ubuntu 16.04下载qq 编辑:程序博客网 时间:2024/05/16 18:11

题目链接: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的数一一输出就行(但是这题真是无语,算这种题目真是累,脑洞啊~~)

代码:

#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <iostream>#include <queue>#include <algorithm>#include <vector>using namespace std;#define LL __int64int main(){    int n,i;    while(~scanf("%d",&n))    {        if(n<4)            printf("-1\n");        else if(n==4)        {            printf("1 * 2\n");            printf("5 + 3\n");            printf("6 + 4\n");        }        else if(n==5)        {            printf("1 / 2\n");            printf("6 / 3\n");            printf("4 - 7\n");            printf("5 * 8\n");        }        else if(n==6)        {            printf("1 + 2\n");            printf("7 + 3\n");            printf("8 + 4\n");            printf("9 + 5\n");            printf("10 - 6\n");        }        else if(n==7)        {            printf("1 / 2\n");            printf("3 * 4\n");            printf("9 - 8\n");            printf("5 + 6\n");            printf("10 / 11\n");            printf("12 * 7\n");        }        else if(n==8)        {            printf("1 - 2\n");            printf("9 * 3\n");            printf("10 * 4\n");            printf("11 * 5\n");            printf("12 + 6\n");            printf("13 + 7\n");            printf("14 + 8\n");        }        else if(n==9)        {            printf("4 / 5\n");            printf("6 / 7\n");            printf("8 / 9\n");            printf("1 + 2\n");            printf("13 + 3\n");            printf("14 - 10\n");            printf("15 - 11\n");            printf("16 - 12\n");        }        else if(n==10)        {            printf("1 / 2\n");            printf("3 / 4\n");            printf("5 / 6\n");            printf("7 / 8\n");            printf("9 + 10\n");            printf("11 + 12\n");            printf("16 + 13\n");            printf("17 + 14\n");            printf("18 + 15\n");        }        else if(n==11)        {            printf("1 + 2\n");            printf("3 / 4\n");            printf("5 / 6\n");            printf("12 + 13\n");            printf("15 + 14\n");            printf("7 - 8\n");            printf("17 * 9\n");            printf("18 * 10\n");            printf("19 * 11\n");            printf("20 + 16\n");        }        else if(n==12)        {            printf("1 + 2\n");//13            printf("13 / 3\n");//14            printf("14 * 4\n");//15            printf("5 - 6\n");//16            for(i=7;i<13;i++)                printf("%d * %d\n",i,i+9);            printf("15 + 22\n");        }        else if(n==13)        {            printf("1 + 2\n");//14            printf("14 / 3\n");//15            printf("4 / 5\n");//16            printf("6 - 16\n");//17            printf("15 * 17\n");//18            printf("7 - 8\n");//19            for(i=9;i<14;i++)                printf("%d * %d\n",i,i+10);            printf("18 + 24\n");        }        else if(n==14)        {            printf("1 / 2\n");//15            printf("3 / 4\n");//16            printf("5 - 15\n");//17            printf("17 - 16\n");//18            printf("6 + 7\n");//19            printf("19 / 8\n");//20            printf("20 * 18\n");//21            printf("9 - 10\n");//22            for(i=11;i<15;i++)                printf("%d * %d\n",i,i+11);            printf("21 + 26\n");        }        else        {            printf("1 + 2\n");            printf("3 + 4\n");            printf("5 + 6\n");            printf("7 + 8\n");            printf("%d + 9\n",n+1);            printf("%d / 10\n",n+2);            printf("%d / 11\n",n+3);            printf("%d / 12\n",n+4);            printf("%d / 13\n",n+5);            printf("%d * %d\n",n+6,n+7);            printf("%d * %d\n",n+8,n+9);            printf("%d * %d\n",n+10,n+11);            printf("14 - 15\n");            int now=n+13;            for(i=16;i<=n;i++)            {                printf("%d * %d\n",i,now);                now++;            }            printf("%d + %d\n",n+12,now);        }    }    return 0;}


0 0
原创粉丝点击