CSU-1715 Positive Con Sequences(模拟分四种情况 )From湖南省多校对抗赛E题(2016.03.27)

来源:互联网 发布:2016网络作家排名 编辑:程序博客网 时间:2024/04/30 11:01

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;}
0 0
原创粉丝点击