洛谷原题

模拟题。


我们只需判断两种情况即可。

情况 1:解除限速

解除限速后,只剩下国家限速了。因为当前速度和限速一样时是合法的。 输出国家限速即可。

情况 2:限速标志

此时应以当前限速为准。输出当前限速。然后让国家限速更新。

AC 记录

AC 代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,ma=INT_MIN;//ma 表示当前已知国家限速
    scanf("%d",&n);
    while(n--){
        char c;
        cin>>c;
        if(c=='/'){//解除限速标志
            printf("%d\n",ma);
        }else{
            int x=(c-'0');
            while(c=getchar()){
                if(c=='\n'){
                    break;
                }
                x*=10;
                x+=(c-'0');
            }
            printf("%d\n",x);//当前限速
            ma=max(ma,x/10*10+10);//国家限速更新
        }
    }
    return 0;
}

代码解释

while(c=getchar()){
  if(c=='\n'){
    break;
  }
  x*=10;
  x+=(c-'0');
}

这是为了输入当前限速。因为之前为了判断是否是解除限速标志输入了一个字符,所以要把这个字符和后面的数字拼起来。

x/10*10+10 是为了更新国家速度。因为国家速度要比所有已经看到了的限速要高,还是 \(10\) 的倍数。这句话等价于 x-x%10+10x-x%10 可以把个位变成零,加上十就保证了既比所有已经看到的限速要高,且是十的倍数。

posted on 2026-06-29 21:45  lz5332t  阅读(1)  评论(0)    收藏  举报