描述
传染病突袭A城,A城提出解决方案,各类娱乐场所保证人群不能密切接触,做好防护措施,现在某电影院提出了如下开业方案:
两个人不能坐在相邻的位置上(即两个人之间至少要隔一个座位),现在有一排横向排列的座位,电影院的负责人想知道,这一排最多能坐多少人?
输入
输入一行字符串s,’.’代表一个座位,1≤s字符串的长度≤1000001≤s字符串的长度≤100000 (输入的字符串中只包含’.’)
输出
一个整数,代表最多能坐多少人。
输入样例 1
..
输出样例 1
1
读题目,获取重要信息.
“两个人不能坐在相邻的位置上(即两个人之间至少要隔一个座位)”
**读完这句话,应该明白是 接一跳一的形式坐人
“现在有一排横向排列的座位,电影院的负责人想知道,这一排最多能坐多少人?”
**读完这句话我们得知,我们不需要考虑换行的情况,我们需要求的结果是一排能做几个人
通过输入我们可以知道,字符串S 代表的是座位的总数, s 中包含且仅包含”.” 而”.”代表的是一个座位.那我们只要知晓字符串 s 的总长度 就相当于 知道了座位的总数..
len() : 获取长度
可以获取很多数据的长度,例如: 列表,字符串,字典等…
使用方式 : len(s) s就是上面的那个字符串
回到一开始的问题,我们来找一找规律,
座位数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
人数 | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 4 | 5 |
奇数:坐了上一个偶数个数加一的人数 |
偶数:坐了座位数一半的人数 |
进阶:奇数能坐人数: |
(座位数+1)/2 |
通过这个规律,总结出两个小公式:
奇数:(座位数+1)/2
偶数: 座位数/2
那现在最大的问题就是,区分奇数和偶数
找偶数我们可以跟2 相除,.看看能不能整除
这个时候,if 就用得上了. 怎么判断一个数与另一个数能否整除呢??????
取余!!!!!!!! %
if len(s) % 2 == 0
上面这个式子不就表示判断能否被2整除了吗.
余数为零表示是个偶数,那不为零,肯定就不是了呗
是偶数:
print(len(s)//2) 这里用双斜杠 “//” 的用意是,我的结果需要是整数,不能是小数
是奇数:
print((len(s)+1)//2)
完整程序:
s = input()
if len(s) % 2 == 0:
print(len(s) // 2)
else:
print((len(s)+1) // 2)