HDU 5308 I Wanna Become A 24-Point Master(模拟+数论)
2015-09-03 08:14
357 查看
Description
给出n个数字n,要把所有数字用完,使用+-*/最后变为24,中间运算可以有有浮点数
Input
多组用例,每组一个整数n,以文件尾结束输入
Output
对于每组用例,如果能运算出24点则输出运算过程,否则输出-1
Sample Input
4
Sample Output
1 * 2
5 + 3
6 + 4
Solution
打表。。。
Code
给出n个数字n,要把所有数字用完,使用+-*/最后变为24,中间运算可以有有浮点数
Input
多组用例,每组一个整数n,以文件尾结束输入
Output
对于每组用例,如果能运算出24点则输出运算过程,否则输出-1
Sample Input
4
Sample Output
1 * 2
5 + 3
6 + 4
Solution
打表。。。
Code
#include<cstdio> #include<iostream> using namespace std; int main() { int n; while(scanf("%d",&n)!=EOF) { if(n<=3)printf("-1\n"); else if(n==4)printf("1 * 2\n5 + 3\n6 + 4\n"); else if(n==5)printf("1 / 2\n6 / 3\n4 - 7\n5 * 8\n"); else if(n==6)printf("1 * 2\n7 + 3\n8 - 4\n9 - 5\n10 - 6\n"); else if(n==7)printf("1 + 2\n8 + 3\n4 + 5\n10 + 6\n11 / 7\n9 + 12\n"); else if(n==8)printf("1 + 2\n3 + 9\n4 - 5\n6 * 11\n7 * 12\n8 * 13\n10 + 14\n"); else if(n==9)printf("1 / 2\n3 - 10\n4 / 5\n6 - 12\n7 / 8\n9 - 14\n11 + 13\n16 + 15\n"); else if(n==10)printf("1 / 2\n3 / 4\n5 + 6\n13 / 7\n11 + 8\n12 + 15\n16 * 14\n17 + 9\n18 - 10\n"); else if(n==11)printf("1 / 2\n12 + 3\n4 / 5\n7 / 6\n9 / 8\n11 / 10\n14 + 15\n13 * 18\n19 + 16\n20 - 17\n"); else if(n==12)printf("1 + 2\n13 / 3\n14 * 4\n15 + 5\n16 - 6\n17 + 7\n18 - 8\n19 + 9\n20 - 10\n21 + 11\n22 - 12\n"); else if(n==13)printf("1 / 2\n3 - 14\n4 / 5\n6 / 7 \n16 + 17\n18 * 15\n19 + 8\n20 - 9\n21 + 10\n22 - 11\n23 + 12\n24 - 13\n"); else if(n%2) { printf("1 + 2\n"); printf("%d + 3\n",n+1); printf("4 + 5\n"); printf("6 + 7\n"); printf("8 + 9\n"); printf("10 + 11\n"); printf("%d + %d\n",n+3,n+4); printf("%d + %d\n",n+5,n+6); printf("%d + %d\n",n+7,n+8); printf("%d / 12\n",n+2); printf("%d / 13\n",n+9); printf("%d * %d\n",n+10,n+11); char c; for(int i=13;i<n;i++) printf("%d %c %d\n",n+i-1,i%2==0?'-':'+',i+1); } else if(n%2==0) { printf("1 + 2\n"); printf("3 + 4\n"); printf("5 + 6\n"); printf("7 + 8\n"); printf("9 + 10\n"); printf("%d + %d\n",n+1,n+2); printf("%d + %d\n",n+5,n+6); printf("%d + %d\n",n+3,n+4); printf("%d / 11\n",n+7); printf("%d / 12\n",n+8); printf("%d * %d\n",n+9,n+10); char c; for(int i=11;i<n-1;i++) printf("%d %c %d\n",n+i,i%2==0?'-':'+',i+2); } } return 0; }
相关文章推荐
- hdu 1176 免费馅饼(数塔类型)
- 已解——navicat premium 连接oracle 11g,出现no listener提示
- Java集合
- linux系统启动流程
- MOOC数据结构-01-复杂度1 最大子列和问题 (20分)
- LFS过程问题解决
- #用Python直接写UTF-8文本文件
- CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)
- php 性能优化 笔记
- JavaSE---IO流基础(异常、File类、递归)
- CentOS下SVN安装及配置图解教程
- 【IMPDP】使用工具IMPDP导入数据时ORA-39002、ORA-39070错误排查
- 【翻译自mos文章】怎么允许特定版本的client 登陆到database中
- Gradle--第二章。概述 2.2 为什么是Groovy
- StringBuilder和String的区别
- 计算的极限(七):宛如神谕
- iOS-开发日志-UIButton
- iOS-开发日志-UIButton
- iptables
- 苹果API常用英语名词