牛客编程巅峰赛:妞妞扔牌

题目

链接:https://ac.nowcoder.com/acm/contest/6219/A
来源:牛客网

牛牛现在有n张扑克牌,每张扑克牌都有点数和花色两部分组成。点数为‘1’-‘9’的正整数,花色为’C’,‘D’,‘H’,‘S’'其中的一个,分别表示梅花、方块、红桃、黑桃。现在牛牛想按一定的顺序把这n张牌扔掉。扔牌顺序的规则如下1.:
1.如果现在还剩素数张牌,则将牌顶的牌扔掉
2.如果现在还剩非素数张牌,则将牌底的牌扔掉
牛牛想知道他的扔牌顺序是什么,请返回扔牌顺序的字符串

题解

class Solution:
    def Orderofpoker(self , x ):
        # write code here
        import math
        n = len(x)//2
        top = 0            #顶部
        bottom = len(x)    #底部
        ls = []            #用来存放弹出来的排
        while n > 0:
            if n not in [2,3,5,7]:
                ls.append(x[bottom-2:bottom])
                bottom-=2
            else:
                ls.append(x[top:top+2])
                top += 2
            n -= 1
        return "".join(ls)
首先:数字和颜色组成一组排,所以 n 取一半;所以每次看还剩才几张排n,n是否是素数,决定扔牌的顺序,因为n 的大小在10 以内,所以可以直接列出10以为的素数,如果n等于1,则,仍顶排和底牌都一样。

理清思路,不算难,难得就是要自己动手。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值