2017.6.4测试 题四 猜数

本文展示了一个使用Pascal语言实现的程序示例,通过读取输入并根据不同的条件更新变量来找出满足特定条件的最小整数。该程序定义了两个函数用于返回两个整数中的最大值和最小值,并通过字符串操作分离出输入中的比较符号和数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


var
 s,ss:string;
 n,x,k,i,j,h,t:longint;
 ans:char;
function max(a,b:longint):longint;
begin
 if a>b then exit(a);
 exit(b);
end;
function min(a,b:longint):longint;
begin
 if a<b then exit(a);
 exit(b);
end;
begin
 readln(n);
 h:=-2333333;t:=2333333;//用作比大小
 for i:=1 to n do
  begin
   readln(s);
   k:=pos(' ',s);//分离出大于、小于或等于符号
   ss:=copy(s,1,k-1);
   delete(s,1,k);
   k:=pos(' ',s);//分离出数字
   val(copy(s,1,k-1),x);
   ans:=s[k+1];
   if ans='N' then//如果是'N'的话,就得把符号反转(不包括它的所有情况)
    begin
     if ss='>' then ss:='<='
               else if ss='<' then ss:='>='
                              else if ss='>=' then ss:='<'
                                              else if ss='<=' then ss:='>';
    end;
   if ss='>' then h:=max(h,x+1);//最小也要比x大1
   if ss='>=' then h:=max(h,x);//最小就相同
   if ss='<' then t:=min(t,x-1);//最大顶多比x小1
   if ss='<=' then t:=min(t,x);//最大就相同
  end;
 if h<=t then writeln(h)//如果满足所有大于(等于)的,也满足所有小于(等于)的,它就是最小的(选h是因为它每次比较都是选最小的比,不停动态规划成最小了)
         else writeln('Impossible');
end.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值