verybigstudent 2022-02-08 14:00 采纳率: 60%
浏览 80
已结题

python 子串问题

作为友好的寒假集训营,小红当然要送给大家一道签到题!

小红拿到了一个正整数 xx 。她想构造一个正整数 yy,满足以下性质:

  1. yy 是 xx 的倍数,且 xx 和 yy 不能相等。
  2. xx 在二进制表示下(为一个01串)是 yy 的二进制表示的一个子串。且 xx 和 yy 的二进制表示的1的个数不能相同。
  3. yy 必须为不超过 10^{19}10
    19
    的正整数。
    举个例子:
    若 x=5x=5 :
    那么构造的 yy 不能是5,因为这样 yy 和 xx 相等,所以非法。
    也不能是 6,因为这样 yy 不是 xx 的倍数,所以非法。
    也不能是 10 ,因为这样 yy 的二进制表示是 1010、xx 的二进制表示是101,虽然 yy 是 xx 的倍数且 xx 的二进制是 yy 的一个子串,但它们的 '1' 的个数相同,所以非法。
    输入描述:
    一个正整数 xx 。
    数据范围: 1≤ x≤ 10^91≤x≤10
    9

输出描述:
构造的正整数 yy 。如果有多个合法解,输出任意即可。可以证明,无论 xx 是多少,最终一定是有合法解的。
示例1
输入
5
输出
95
说明
95是5的倍数,满足第一个性质。95的二进制表示是 '1011111',包含了子串 '101',满足第二个性质。
另外,45、90、125等答案也都是合法解。

  • 写回答

1条回答 默认 最新

  • ~白+黑 Python领域新星创作者 2022-02-08 14:34
    关注
    
    def make(num):
        n=2
        bnum = bin(num)
        while True:
            res = num*n
            one = bnum.count("1")-bin(res).count("1")
            if (bnum in bin(res)) and  (one != 0):
                yield res
            n += 1
    
    if __name__ == "__main__":
        a=make(5)
        for i in range(10):
            print(next(a))
        
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月16日
  • 已采纳回答 2月8日
  • 创建了问题 2月8日

悬赏问题

  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题