码迷,mamicode.com
首页 > 其他好文 > 详细

猜数字(模拟)

时间:2018-06-15 21:47:15      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:ace   模拟   一个   return   text   等于   name   TE   enter   

猜数字(模拟)

题目描述:

猜数字游戏啦!给你如下四种提示:

(1)这个数严格大于x吗?

(2)这个数严格小于x吗?

(3)这个数大于等于x吗?

(4)这个数小于等于x吗?

每个提示,都会给出相应的答案,yes或者no。

如果有多个数满足条件,输出最小的。如果不存在这样的数,输出“Impossible”。

输入格式:

第一行输入一个整数n。

接下来n行,每行一个字符串“sign x answer”,是四个提示的中的一个。

sign是“>”,"<","<=",">="; answer 是“Y”或者"N" ;

如(1)就会有类似这样的字符串“  > x Y” 或者“ > x N”;

输出格式:

如果最终的答案有下界的,则输出这个下界
如果存在答案,但是答案没有下界,输出-2000000000
否则输出“Impossible”

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int a,xx=-21842,sx=999999; //下限和上限
 7     cin>>a;
 8     for(int i=0;i<a;i++)
 9     {
10         string s;
11         int b;
12         cin>>s;
13         if(s==">")
14         {
15             cin>>b;
16             cin>>s;
17             if(s=="Y")
18             {
19                 if(xx<b+1) xx=b+1; //改下限
20             }
21             else
22             {
23                 if(sx>b) sx=b; //改上限
24             }
25         }
26         else if(s=="<")
27         {
28             cin>>b;
29             cin>>s;
30             if(s=="Y")
31             {
32                 if(sx>b-1) sx=b-1; //改上限
33             }
34             else
35             {
36                 if(xx<b) xx=b; //改下限
37             }
38         }
39         else if(s==">=")
40         {
41             cin>>b;
42             cin>>s;
43             if(s=="Y")
44             {
45                 if(xx<b) xx=b; //改下限
46             }
47             else
48             {
49                 if(sx>b-1) sx=b-1; //改上限
50             }
51         }
52         else if(s=="<=")
53         {
54             cin>>b;
55             cin>>s;
56             if(s=="Y")
57             {
58                 if(sx>b) sx=b; //改上限
59             }
60             else
61             {
62                 if(xx<b+1) xx=b+1; //改下限
63             }
64         }
65     }
66     if(xx!=-21842&&xx<=sx) cout<<xx; //有解
67     else if(xx==-21842) cout<<"-2000000000"; //无下限
68     else cout<<"Impossible"; //无解
69     return 0;
70 }

 

猜数字(模拟)

标签:ace   模拟   一个   return   text   等于   name   TE   enter   

原文地址:https://www.cnblogs.com/abs27/p/9188956.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!