黑洞数:黑洞数又称陷阱数,是类具有奇特转换特性的整数。任何一个数字不全相同整数,经有限“重排求差”操作,总会得某一个或一些数,这些数即为黑洞数。“重排求差”操作即把组成该数的数字重排后得到的最大数减去重排后得到的最小数。或者是冰雹原理中的“1”黑洞数

EG:

  • 举个例子,三位数的黑洞数为495
  • 简易推导过程:随便找个数,如297,三个位上的数从小到大和从大到小各排一次,为972和279,相减,得693
  • 按上面做法再做一次,得到594,再做一次,得到495
  • 之后反复都得到495
  • 再如,四位数的黑洞数有6174
 def fun(n):
k = n
a = []
while k > 0:
a.append(k % 10)
k //= 10 #这里要使用地板除 a.sort() s1 = 0
for i in a:
s1 = s1*10 + i s2 = 0
for i in a[::-1]:
s2 = s2*10 + i if (s2 - s1) == n:
return n
else:
return fun(s2 - s1)

传进去一个整数,然后返回一个黑洞数,但是这个里面可以改进,将一个整数拆分成一个列表,可以其使用字符串的思想,获得排列后最大的数和最小的数,可以使用一个reduce内置函数和lambda表达式

 from functools import reduce
def fun(n):
k = n
a = [int(i) for i in str(n)] #一行代码搞定 a.sort() s1 = reduce(lambda x, y: x * 10 + y, a) #一行代码搞定
s2 = reduce(lambda x,y:x * 10 +y,a[::-1]) s2 = 0
for i in a[::-1]:
s2 = s2*10 + i if (s2 - s1) == n:
return n
else:
return fun(s2 - s1)

黑洞数--python的更多相关文章

  1. 18.12.09-C语言练习:黑洞数 / Kaprekar问题

    题目: 程序: #include <stdio.h> int main(void) { int n, a, b, c, t, A, B; printf("输入一个三位数整数:&q ...

  2. 细数Python Flask微信公众号开发中遇到的那些坑

    最近两三个月的时间,断断续续边学边做完成了一个微信公众号页面的开发工作.这是一个快递系统,主要功能有用户管理.寄收件地址管理.用户下单,订单管理,订单查询及一些宣传页面等.本文主要细数下开发过程中遇到 ...

  3. 算法笔记_217:黑洞数(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456.求这两个数字的差,得:41 ...

  4. nyoj 198-数数 (python, string[::-1])

    198-数数 内存限制:64MB 时间限制:3000ms 特判: No 通过数:16 提交数:25 难度:2 题目描述: 我们平时数数都是喜欢从左向右数的,但是我们的小白同学最近听说德国人数数和我们有 ...

  5. Java实现 黑洞数

    任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456.求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则 ...

  6. 丑数(python)

    题目描述 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数.   # ...

  7. 细数Python的特殊方法一:集合类

    1. 特殊方法汇总列表     2. 仿集合类 __len__:返回对象的长度 __getitem__:获得某一项的值 __setitem__:设置莫一项的值 __delitem__删除某一项 __c ...

  8. 相亲数--Python

    想亲数:在遥远的古代,人们发现某些自然数之间有特殊的关系:如果两个数a和b,a的所有除本身以外的因数之和等于b,b的所有除本身以外的因数之和等于a,则称a,b是一对相亲数 code: def sumF ...

  9. “肥宅快乐数”-python暴力版

     编写一个函数来判断一个数是不是“快乐数”.一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1.如 ...

随机推荐

  1. Angular 5.x 学习笔记(1) - 模板语法

    Angular 5.x Template Syntax Learn Note Angular 5.x 模板语法学习笔记 标签(空格分隔): Angular Note on github.com 上手 ...

  2. idea打jar包经验总结

    关于在idea下打jar问题,在日常工作中经常用到,这里总结下流程. 1.在项目上鼠标右键 --> Open Module Settings 2.如下图,点击 '+' 3. 选择JAR --&g ...

  3. 通过一个实际例子理解Kubernetes里pod的自动scale - 水平自动伸缩

    kubectl scale命令用于程序在负载加重或缩小时进行pod扩容或缩小,我们通过一些实际例子来观察scale命令到底能达到什么效果. 命令行创建一个deployment: kubectl run ...

  4. 到底哪种类型的错误信息会阻止business transaction的保存

    当试图在CRM WebUI保存一个business transaction比如Opportunity时,可能会遇到各种各样的错误消息.有的错误消息会阻止Business transaction被sav ...

  5. MySQL学习(四)查询

    一.group_concat()函数.把groupby的分组中字段数据组合显示出来 select s_id , GROUP_CONCAT(要显示的字段名)  from table group by 分 ...

  6. 初次接触《C++程序设计原理与实践》一书

    前两天读书日,买了些书回来看.__Bjarne Stroustrup__的<C++程序设计原理与实践>便是其中一本.其实也没看完,只看了第0章-致读者,大师不愧是大师,只看了一章就让心生共 ...

  7. POJ-2828 Buy Tickets---线段树+逆序

    题目链接: https://cn.vjudge.net/problem/POJ-2828 题目大意: 插队的问题,每个案例给出n,代表有n个插队的,每个给出p,v,意思是代号为v的人插在了第p个人的后 ...

  8. bzoj5000 OI树

    Description 几天之后小跳蚤即将结束自己在lydsy星球上的旅行.这时,lydsy人却发现他们的超空间传送装置的能量早在小跳蚤通过石板来到lydsy星球时就已经消耗光了.这时,小跳蚤了解到自 ...

  9. 十天精通CSS3

    课程地址:http://www.imooc.com/learn/33 第1章 初识CSS3 CSS3课程列出第一站,先带领大家进入CSS3的世界,探索CSS3的魅力! 你做好准备了吗? 第2章 边框 ...

  10. (第六场)Heritage of skywalkert 【玄学】

    题目链接:https://www.nowcoder.com/acm/contest/144/J 标题:J.Heritage of skywalkert | 时间限制:1 秒 | 内存限制:256M s ...