欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

猜数字(模拟)

程序员文章站 2022-07-10 20:14:47
猜数字(模拟) 题目描述: 猜数字游戏啦!给你如下四种提示: (1)这个数严格大于x吗? (2)这个数严格小于x吗? (3)这个数大于等于x吗? (4)这个数小于等于x吗? 每个提示,都会给出相应的答案,yes或者no。 如果有多个数满足条件,输出最小的。如果不存在这样的数,输出“Impossibl ......

猜数字(模拟)

题目描述:

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

(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 }