python——幸运号码

幸运号码

类型:随机数

描述

学校元旦活动有一个抽奖环节,每位同学按入场顺序被分配一个号码,即每个人的号码为他是第几位入场。活动进行到抽奖环节时,主持人先公布活动总人数 n 并找一名同学随便说一个整数用作随机数的种子,然后从 3 到 2n-1 之间获得一个随机数(包括 3 和 2n-1)做为幸运数字,如果有两个人的号码之和与这个幸运数字相等,就会奖励这两个人神秘礼物。如果无人获奖,则重新抽取幸运数字;如果有多组号码符号要求,由包含最小数的一组号码中奖;一旦有人获奖,则抽奖环节结束。

输入格式

在同一行内输入 2 个不超过100的正整数,第一个代表参与活动总人数,第二个为随机数种子。

输出格式

在同一行内输出幸运号码和中奖的两个数字,用空格分隔,中奖数字按从小到大的顺序输出。

示例

输入:

100 100

输出:

40 1 39

参考代码

# 方法一
# --------      -------    --------
# @File   : 幸运号码.py 
# @Author : 赵广辉   
# @Contact: vasp@qq.com
# @Company: 武汉理工大学
# @Version: 1.0
# @Modify : 2021/12/23 9:11
# Python程序设计基础,高等教育出版社
# --------      -------    --------


import random


def choose(person):
    """接收总人数person,返回一个包含幸运数字和中奖同学列表的元组"""
    lucky_number = random.randint(3, 2 * person-1) # 得到幸运数字
    ls = []
    for i in range(1, person + 1):
        if 0 < lucky_number - i < person:
            ls.append(sorted([i, lucky_number - i]))
    return lucky_number, ls


if __name__ == '__main__':
    people, the_seed = map(int, input().split())  
    random.seed(the_seed)
    while True:
        score = choose(people)
        if len(score[1]) != 0:  
            break
    result = sorted(score[1])
    print(score[0], *result[0])
# 方法二
import random

n,s = map(int,input().split())
ls = list(range(1,n+1))
random.seed(s)
flag = 0
while True:
    lucky = random.randint(3, 2*n-1)
    for i in ls:
        if lucky-i in ls and i != lucky-i:
            print(lucky,i,lucky-i)
            flag = 1
            break
    if flag == 1:
        break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_62488776

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值