您的位置:首页 > 产品设计 > UI/UE

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: 70

Description



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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: