『MdOI R2』Car
题目描述
在 MdOI 市,为了推行环保,在城区内将限制某些车辆的通行,简称限行。一辆车是否被限行的依据是车牌号和当天的日期。
车牌号的编码方式是这样的:
-
前三位均为大写字母,表示所在的地区。
-
后五位为大写字母或数字,为识别码。保证至少有一个数字。
-
车牌号的尾号是从右往左的第一个数字。
MdOI 市在本题的编码方式下前三位是 MDA
。例如,MdOI 市有一辆识别码为 6780P
的车,它的车牌号就是 MDA6780P
,尾号是
0
0
0。
在 MdOI 市,限行规则如下:
- 对于外来车(即前三位编号非
MDA
),工作日(星期一至星期五)均限行。 - 对于其他本地车,每天会限行某些尾号的汽车。星期一至星期五的限行尾号如下:
日期 | 星期一 | 星期二 | 星期三 | 星期四 | 星期五 |
---|---|---|---|---|---|
限行尾号 | 1 1 1 和 9 9 9 | 2 2 2 和 8 8 8 | 3 3 3 和 7 7 7 | 4 4 4 和 6 6 6 | 5 5 5 和 0 0 0 |
小 C 告诉了你她的车牌号,她想知道,她的车在星期一到星期五中的哪些日期会被限行。请你帮帮她。
输入格式
一行一个长度为 8 8 8 的字符串,表示小 C 的车牌号。
输出格式
输出 5 5 5 个数字,每个数字为 0 0 0 或 1 1 1,分别表示星期一至星期五小 C 的车是否被限行。 1 1 1 表示限行, 0 0 0 表示不限行。
样例 #1
样例输入 #1
MDA7U16D
样例输出 #1
0 0 0 1 0
样例 #2
样例输入 #2
ZJOI2020
样例输出 #2
1 1 1 1 1
提示说明
【帮助与提示】
为方便选手调试代码,本题额外提供三组样例。由于样例较小,故放在一个剪贴板内。
【样例解释】
对于样例一,这个车牌号前三位为 MDA
,因此是本地车牌。而尾号是
6
6
6,因此周四被限行。
对于样例二,这个车牌号前三位为 ZJO
,是外地车牌,因此周一至周五均被限行。
【数据范围】
本题采用捆绑测试,即通过一个子任务的所有测试点才能拿到对应的分数。
子任务编号 | 特殊性质 | 分值 |
---|---|---|
Subtask 1 | 前
3
3
3 位不是MDA | 30 30 30 |
Subtask 2 | 最后一位一定是数字 | 30 30 30 |
Subtask 3 | 无 | 40 40 40 |
对于所有数据,满足前三位一定是大写英文字母,后面五位可能包含大写字母或者数字,且至少有一个数字。
代码内容
// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <queue>//堆/优先队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
string s;
cin>>s;
if("MDA"!=s.substr(0,3))
puts("1 1 1 1 1");
else
{
ll w;
for(w=7;s[w]>'9';w--);
for(ll i=1;i<5;i++)
{
if(s[w]==i+'0'||s[w]=='0'+10-i)
cout<<1<<" ";
else cout<<0<<" ";
}
//判断周五
if(s[w]=='5'||s[w]=='0') puts("1");
else puts("0");
}
return 0;
}