前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【小米OJ】 灯

【小米OJ】 灯

作者头像
喜欢ctrl的cxk
发布2019-11-08 10:32:11
4470
发布2019-11-08 10:32:11
举报

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42449444/article/details/86654048

题目描述:

一个屋子有 n 个开关控制着 n 盏灯,但奇怪的是,每个开关对应的不是一盏灯,而是 n-1 盏灯,每次按下这个开关,其对应的 n-1 盏灯就会由亮变灭,或者由灭变亮。保证不会有两个开关控制同样的 n-1 盏灯。

现在刘同学想把灯全部开好,但是这些灯一开始的状态非常乱,刘同学想知道最少需要按多少次开关才能使所有灯全部亮起。

输入描述:

单组数据输入,每组数据一行,两个数 n,l 分别代表灯的数量、最开始时亮着的灯的数量(1<l<n<10000000000)。

输出描述:

每组数据输出一个数,即能使所有灯全部亮起的最少的按开关的次数,如果无法做到灯全部亮起,输出“Impossible”

输入样例:

4 2

输出样例:

2

解题思路:

嘤嘤嘤,这是昨晚的小米OJ一月常规赛的第一题,通过率很低,只有17%,额 当时就写出来2题。

已知总共有n盏灯,其中有l盏是亮灯。只有俩种情况。①如果按的是一盏亮灯的开关,会改变其它n-1盏灯,那么将有 n-l+1 盏亮。②如果按的是一盏暗灯的开关,会改变其它n-1盏灯,那么将有 n-l-1 盏亮。 若最后有n盏灯亮,那么倒数第二步就应该有1盏灯亮,倒数第三步就应该有n-2盏灯亮,……由后往前亮灯的盏数:n-0、1、n-2、3、n-4、5、n-6、……,规律很明显。可以得出这样的结论:①如果n为偶数、m为偶数:n-m;②如果n为偶数、m为奇数:m;③如果n为奇数、m为偶数:不可能;④如果n为奇数、m为奇数:n-m和m两者之最小值。

AC代码:

def solution(line):
    n,l = map(int,line.split())
    flag1 = n % 2 == 0   
    flag2 = l % 2 == 0
    if flag1:
        if flag2:
            return n-l
        else:
            return l
    else:
        if flag2:
            return "Impossible"
        else:
            return min(n-l,l)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-01-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述:
  • 输入描述:
  • 输出描述:
  • 输入样例:
  • 输出样例:
  • 解题思路:
  • AC代码:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档