文档章节

卡布列克常数

寂寞暴走伤
 寂寞暴走伤
发布于 2016/07/14 19:30
字数 531
阅读 5
收藏 0

问题描述:

任意一个不是用完全相同数字组成的四位数,如果对它们的每位数字重新排序,组成一个较大的数和一个较小的数,然后用较大的数减去较小数,不够四位数时补零,类推下去,最后将变成一个固定的数:6174,这就是卡布列克常数。
例如:
4321-1234=3087
8730-378=8352
8532-2358=6174
7641-1467=6174
编写程序验证卡布列克常数。


我的代码:

n=list(raw_input("input a number: "))
def minnb(n):
    mi=[]
    n.sort()
    for i in range(len(n)):
        mi.append(int(n[i]))
    return  mi

def maxnb(n):
    ma=[]
    n.sort(reverse=True)
    for i in range(len(n)):
        ma.append(int(n[i]))
    return ma

def fun(ma,mi):
    t=(ma[0]*1000+ma[1]*100+ma[2]*10+ma[3])-(mi[0]*1000+mi[1]*100+mi[2]*10+mi[3])
    return t

def lists(s):
    return list(str(s))

while True:
    a=maxnb(n)
    b=minnb(n)
    c=fun(a,b)
    if c==6174:
        print "It is OK..."
        break
    else:
        n=lists(c)


我的思路:

各函数说明

minnb:返回数的正向排序列表即最小数,格式为[1,2,3,4]

maxnb:返回输的逆向排序列表即最大数,格式为[4,3,2,1]

fun:返回两个数的差值,类型为int

lists:将一个整数转换为如['1','2','3','4']格式的列表


了解这些函数的功能后,整个代码就好懂了。整个过程是这样:传入参数1234,变为['1','2','3','4'],然后通过minnb函数变为[1,2,3,4]格式,同理也得到[4,3,2,1],然后通过fun函数得到两者之差,判断其值是否等于6174,如果等于就完成了证明。否则将int类型的差值通过lists函数转换为[1,2,3,4]格式作为参数传入,继续循环,直到出现6174再退出;


示例代码:

def fun(n):
    if n == 6174:
        print '6174'
        return
    a = []
    while n:
        a.append(n % 10)
        n /= 10
    a.sort()
    s = 0
    k1 = 1
    k2 = 1000
    for x in a:
        s += x * (k1 - k2)
        k1 *= 10
        k2 /= 10
    fun(s)
fun(1234)


我的代码只是提供一种解决思路,感觉太繁琐了,很臃肿的样子,还是示例代码要好一些,建议看一下!


题目出处:http://www.cheemoedu.com/exercise/65

© 著作权归作者所有

上一篇: 除式还原
下一篇: 巧算年龄
寂寞暴走伤
粉丝 0
博文 40
码字总数 20969
作品 0
南阳
运维
私信 提问
ABBYY PDF Transformer+ Pro可以支持189种语言

ABBYY PDF Transformer+ Pro版支持189种语言,包括我们人类的自然语言、人造语言以及正式语言。受支持的语言可能会因产品的版本不同而各异。本文具体列举了所有ABBYY PDF Transformer+ Pro支...

ABBYY
2016/12/09
28
0
霍金已逝,这些物理学家也慢慢被淡忘了

2018年3月14日霍金去世,朋友圈都点起蜡烛,不管是否看过他的《时间简史》,是的,又一位举世闻名的物理学家去世了,感觉人类的聪明程度一下锐减。 在你哀悼的时候,是否还记得,另外那些曾经...

挖数
2018/03/16
0
0
改变人类进程的,除了霍金,还有他的好基友们

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定! 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴...

天善智能
2018/07/25
0
0
一周热门电影20170510

所有内容均由爬虫程序生成,对某方面有需求的同学可以留言或直接回复。 1. 银河护卫队2 Guardians of the Galaxy Vol. 2 (2017) 导演: 詹姆斯·古恩 主演: 克里斯·帕拉特 佐伊·索尔达娜 ...

u012175089
2017/05/10
0
0
《月亮与六便士》的读后感作文3000字

《月亮与六便士》的读后感作文3000字: 看完英国作家威廉.萨默塞特.毛姆所著《月亮与六便士》(李继宏译),第一疑问就是全书即没提到“月亮”,也没提到“六便士”。那这书名又与内容有什么...

原创小博客
03/26
62
0

没有更多内容

加载失败,请刷新页面

加载更多

Android 图片加载带进度条的ImageView

https://blog.csdn.net/shu_quan/article/details/79975578

shzwork
6分钟前
2
0
关于XAMPP默认端口80 和443被占用的问题

本文转载于:专业的前端网站➩关于XAMPP默认端口80 和443被占用的问题 关于安装xampp-win32-1.8.1-VC9-installer.zip后启动时候报端口80和443被占用的问题解决 xampp-win32-1.8.1-VC9-instal...

前端老手
8分钟前
2
0
错误Setting the parent of a transform which resides in a Prefab Asset is...

错误日志 Setting the parent of a transform which resides in a Prefab Asset is disabled to prevent data corruption 原因1 用Resouce.Load加载一个prefab,没有实例化直接设置parent ......

XBlock
9分钟前
2
0
Spring boot 配置mybatis

当然任何模式都需要首先引入mybatis-spring-boot-starter的pom文件,现在最新版本是1.1.1(刚好快到双11了 :)) <dependency>    <groupId>org.mybatis.spring.boot</groupId>    <......

雷开你的门
10分钟前
4
0
云栖干货回顾 | 更强大的实时数仓构建能力!分析型数据库PostgreSQL 6.0新特性解读

阿里云 AnalyticDB for PostgreSQL 为采用MPP架构的分布式集群数据库,完备支持SQL 2003,部分兼容Oracle语法,支持PL/SQL存储过程,触发器,支持标准数据库事务ACID。AnalyticDB PG通过行存...

开源中国小二
22分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部