模拟题。
我们只需判断两种情况即可。
情况 1:解除限速
解除限速后,只剩下国家限速了。因为当前速度和限速一样时是合法的。 输出国家限速即可。
情况 2:限速标志
此时应以当前限速为准。输出当前限速。然后让国家限速更新。
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+10。x-x%10 可以把个位变成零,加上十就保证了既比所有已经看到的限速要高,且是十的倍数。
浙公网安备 33010602011771号