CSU-1715 Positive Con Sequences(模拟分四种情况 )From湖南省多校对抗赛E题(2016.03.27)
2016-04-11 21:06
639 查看
1715: Positive Con Sequences
Time Limit: 1 Sec Memory Limit: 128 MB Submit: 378 Solved: 70Description
Input
Output
Sample Input
1 2 -1 4
2 4 8 -1
7 8 -1 21
5 -1 11 14
-1 2 4 6
-1 -1 -1 -1
Sample Output
3
16
-1
8
-1
题意:求为’-1’的未知数,就相当与求x(’-1’),每一个案例有一组数列,判断它是否等比逻辑或等差逻辑,再输出结果。不过注意条件!!不要像俺WA了多次。一:数列为非递减;二:数的范围[1 - 10000],其实暴力排除结果为’-1’的情况比我的简单的多,速度也快。自己的思路没有打开,没想好就开始打代码了。
#include"iostream" #include"cmath" using namespace std; #define eps 1e-6 /* Name: CSU-1715 求未知的"-1"数 Copyright: Author: Date: 10/04/16 18:21 Description: */ int main(){ int i,j,a[5]; while(cin>>a[1]>>a[2]>>a[3]>>a[4]){ int sol; if(a[1]==-1 && a[2]==-1 && a[3]==-1 && a[4]==-1){ break; } if(a[1]==0 || a[2]==0 || a[3]==0 || a[4]==0){ cout<<-1<<endl; continue; } for(i=1; i<=4; i++){ if(a[i]==-1){ sol = i;//位置 } } if(sol==1){ //1 未知 a[0] = a[3]-a[2]; a[1] = a[2]-a[0]; if(a[1]+a[0] ==a[2] && a[1]+2*a[0]==a[3] && a[1]+3*a[0]==a[4] && a[1]<=10000 && a[1]>0){//差 cout<<a[1]<<endl; continue; } a[0] = a[3]/a[2]; a[1] = a[2]/a[0]; if(a[1]*a[0] ==a[2] && a[1]*a[0]*a[0]==a[3] && a[1]*a[0]*a[0]*a[0]==a[4] && a[1]<=10000 && a[1]>0){ //比 cout<<a[1]<<endl; continue; } cout<<-1<<endl; } if(sol==4){// 4未知 a[0] = a[3]-a[2]; a[4] = a[3]+a[0]; if(a[4]-a[0]==a[3] && a[4]-2*a[0]==a[2] && a[4]-3*a[0]==a[1] && a[4]<=10000 && a[4]>0 ){ //差 cout<<a[4]<<endl; continue; } a[0] = a[3]/a[2]; a[4] = a[3]*a[0]; if(a[4]/a[0] ==a[3] && a[4]/a[0]/a[0]==a[2] && a[4]/a[0]/a[0]/a[0]==a[1] && a[4]<=10000 && a[4]>0 ){//比 cout<<a[4]<<endl; continue; } cout<<-1<<endl; } if(sol==2){// 2 未知 a[0] = a[4]-a[3]; a[2] = a[1]+a[0]; if(a[2]+a[0] ==a[3] && a[2]+2*a[0]==a[4] && a[2]-a[0]==a[1] && a[2]<=10000 && a[2]>0){//差 cout<<a[2]<<endl; continue; } a[0] = a[4]/a[3]; a[2] = a[1]*a[0]; if(a[2]*a[0] == a[3] && a[2]*a[0]*a[0]==a[4] && a[2]/a[0]==a[1] && a[2]<=10000 && a[2]>0 ){//比 cout<<a[2]<<endl; continue; } cout<<-1<<endl; } if(sol==3){// 3 未知 a[0] = a[2]-a[1]; a[3] = a[2]+a[0]; if(a[3]-a[0]==a[2] && a[3]-2*a[0]==a[1] && a[3]+a[0]==a[4] && a[3]<=10000 && a[3]>0 ){//差 cout<<a[3]<<endl; continue; } a[0] = a[2]/a[1]; a[3] = a[2]*a[0]; if(a[3]*a[0] ==a[4] && a[3]/a[0]==a[2] && a[3]/a[0]/a[0]==a[1] && a[3]<=10000 && a[3]>0 ){//比 cout<<a[3]<<endl; continue; } cout<<-1<<endl; } } return 0; }
相关文章推荐
- 搭建轻量级git server和git web UI
- 解决“Dynamic Web Module 3.0 requires Java 1.6 or newer.”错误
- activiti自定义流程之整合(二):使用angular js整合ueditor创建表单
- 山东省第四届ACM大学生程序设计竞赛 Mountain Subsequences dp
- EqualsBuilder和HashCodeBuilder
- 入门QT4+VS2008-Gui设计
- IOS开发-UI学习-UITabBarController的使用
- 算法课笔记系列(0)——Prologue and Notation
- String、StringBuffer与StringBuilder之间区别
- StringBuffer与StringBuilder的区别
- UIScrollView subviews多了两个UIImageView
- Gensim and LDA: a quick tour
- 334. Increasing Triplet Subsequence
- zoj 3929 Deque and Balls 树状数组 递推
- 常用SQL语句的整理--SQL server 2008(查询三--子查询)和guid
- UITextField Delegate
- [New learn]动画-基于UIView
- lightoj 1048 - Conquering Keokradong 二分答案
- poj-1986 Distance Queries(lca+ST+dfs)
- UITableView 滑动cell显示不全