题目描述:

4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字。

前几个幸运数字为:4,7,44,47,74,77,444,447...

现在输入一个数字K,输出第K个幸运数。

输入

第一行一个数字T(T<=1000)表示测试数据的组数。对于每组测试数据,输出一个数K

输出

每组数据输出一行,第K个幸运数。

思路规律

/*0           -            -   2的1次-2
//1           4            0
//2           7            1   2的2次-2
//3          44           00
//4          47           01   2的2次-2+2的一次
//5          74           10
//6          77           11   2的3次-2
//7         444          000
//8         447          001
//9         474          010
//10        477          011   2的3次-2+2的两次
//11        744          100
//12        747          101
//13        774          110
//14        777          111   2的4次-2
//15       4444         0000
  ***      ****         **** 
*/  
先确定位数,然后确定在前半部分还是后半部分,例如k=12,位数可以有两种方法确定
方法一:
<span style="color:#6600cc;">for i in range(0,100000):temp1 = pow(2,i)temp2 = temp1+pow(2,i+1)temp3 = (temp1+temp2)/2print temp1,temp2,temp3# 奇数4,偶数7# 前半4,后半7if k>=temp1 and k<=temp3 and k%2==1:len = iprint '最高位=',4,'最低位',4breakelif  k>=temp1 and k>=temp3 and k%2==0:len = iprint '最高位=',7,'最低位',7break<span style="font-size: 14px; background-color: rgb(255, 255, 255);">
</span></span>

方法二:

<span style="color:#993399;">for i in xrange(0,count):if k<=(pow(2,i)-2):# len为第k个数的位数len = i-1break</span>
<span style="background-color: rgb(102, 255, 153);">然后依次判断最高位是什么</span>
输入十进制数12  求出len=3
12             大于2^3-2+2^2 =10             最高位为7
12-2^3  = 4   小于等于2^2-2+2^1=4             最高位为4
4-2^1=2     大于 2^1-2+2^0=1           最高位是7
12对应的数应该为747
</pre></div><h1 style="margin:0px; padding:0px; font-family:Arial; line-height:26px"><pre name="code" class="python">#-*-coding:utf-8-*
def lucky_number():k = int(raw_input('please input k: '))count =1000000result=[]while k>0:for i in xrange(0,count):if k<=(pow(2,i)-2):# len为第k个数的位数len = i-1break#逐步确定最高位,存入列表while len>0:len=len-1# 中间下半部分if k>(pow(2,(len+1))-2+pow(2,len)):result.append(7)k=k-pow(2,(len+1))else:result.append(4)k = k -pow(2,len)astr=[str(i) for i in result]print ''.join(astr)if __name__ == "__main__":while 1:lucky_number()

结果:

please input k: 13
774
please input k: 12
747
please input k: 100
744747
please input k: 100000000
47777747477774444744444447
please input k:
如果正式考试的话raw_input()不要加please input k:提示语言,会编译不通过

python 编程4,和7 幸运数字相关推荐

  1. BP神经网络理解原理——用Python编程实现识别手写数字(翻译英文文献)

    BP神经网络理解原理--用Python编程实现识别手写数字   备注,这里可以用这个方法在csdn中编辑公式: https://www.zybuluo.com/codeep/note/163962 一 ...

  2. Python编程 数值类型 数学计算

    作者简介:一名在校计算机学生.每天分享Python的学习经验.和学习笔记.  座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.Python数值类型 1.数学计算(熟悉) ...

  3. python随机生成100内的10个整数_用python随机生成数字教程_如何用Python编程随机产生10个随机整数,并输出这10个整数的和�9�3...

    如何用Python编程随机产生10个随机整数,并输出这10个整数的和 用Python编程产生10个随机整数,并整数的和,方法如下 准备材料python.电脑 1.需要加载的模块是:random. 2. ...

  4. 输出自己的姓名python_【Python编程:显示自己的的姓名和学号,并将学号各位数字相加求和,并显示.】...

    python题中输入姓名的笔画数,输出所属性格,及该种性格人的典型代表,怎样写程序呀. if esif else 这种结构就行 用Python编写程序:hello.py,要求用户输入姓名并打印&quo ...

  5. python幸运数字判断_幸运数字 小程序

    问题描述:1-N个数字,每个数字的范围-9999到9999,把这N个数字排序后,删除奇数位的数,然后把剩余的数按原位置排序后继续删除奇数位,直到剩余一个数为止,剩余的数就是幸运数,输出幸运数和它最初的 ...

  6. 《读九章算术学Python》如何用Python编程实现阿拉伯数字转换成汉字数字?

    第6章 数量转换 Python编程基础 字典 字符串操作 if-elif-else语句 递归 前面的输入和输出都是阿拉伯数字,这一章我们来看一下如何实现阿拉伯数字和汉字数字之间的相互转换. 6.1 阿 ...

  7. python之字符ASCII码的幸运数字~clash of coding

    文章目录 题目描述 代码效果 知识点准备 string.ascii_letters.index(i) Python isalpha() 方法检测字符串是否只由字母组成. Python lower() ...

  8. python猜数字游戏编程入门_如何利用Python开发一个简单的猜数字游戏

    导读热词 前言 本文介绍如何使用Python制作一个简单的猜数字游戏. 游戏规则 玩家将猜测一个数字.如果猜测是正确的,玩家赢.如果不正确,程序会提示玩家所猜的数字与实际数字相比是"大(hi ...

  9. Python 幸运数字

    Python 幸运数字 题目: ✌小艺定义一个幸运数字的标准包含3条: 1.仅包含4和7. 2.数字的前半部分等于后半年部分. 3.数字的长度是偶数. 输出描述:

最新文章

  1. Tableau系列之使用日期
  2. java 枚举类 扑克牌_Java中的枚举和多态,扑克牌示例
  3. Bootstrap中水平排列的表单form-inline
  4. Spring Boot中表格的请求以及表格界面的显示
  5. hadoop2.2单节点集群的搭建
  6. 为什么优秀的程序员也是优秀的设计师
  7. (day 1)创建项目--3【创建应用】
  8. SAP案例教程FIAA固定资产后台配置
  9. 1.2、SRv6(Segment Routing Over IPv6) 介绍
  10. 工程实践中的体系与系统
  11. 因子分析法(Factor Analysis)是什么分析?
  12. c语言lr分析器的设计与实现_ShinyJson实践之路:词法分析器的设计与实现
  13. ​STM32家族介绍,覆盖STM32F、STM32H、STM32L全系列
  14. Docker 安装最新版禅道16.5版本 原创
  15. c++读取cfg文件
  16. 【Unity3D】协同程序
  17. 12-18-2018学习2.410.6
  18. 深度增强学习(DRL)漫谈 - 从AC(Actor-Critic)到A3C(Asynchronous Advantage Actor-Critic)
  19. [(1+1)2] ?
  20. virtio简介(二) —— virtio-balloon guest侧驱动

热门文章

  1. 贴片电阻、贴片电容规格、封装、尺寸·功率(转)
  2. Linux 命令之 zip -- 压缩文件
  3. WPF实现左右移动(晃动)动画效果
  4. Mac装双系统的那些优缺点详解
  5. windows平台VR全景播放器,支持图片视频,rtsp,rtmp,http,udp,hls等网络格式
  6. python学习第八天
  7. IT小妙招:一键关闭所有程序
  8. [dt]世纪历史长河年代表
  9. 苹果9月12日发布新品,新款iPhone谍照曝光;滴滴多次拒绝调查取证;软银放弃认购蔚来汽车2亿美元IPO股票 | 雷锋早报...
  10. 消息 ByteBuf 详解