注册 登录
编程论坛 汇编论坛

只有极少数人能用汇编编出来的程序,快附上你的答案吧~

五朵金花 发布于 2018-07-09 20:30, 3198 次点击
用汇编语言:
在区间[10000,99999](5位数)之间找出所有满足以下关系的5位数并显示在屏幕上:
abcde=a5+b5+c5+d5+e5
例如54748=55+45+75+45+85
9 回复
#2
wmf20142018-07-11 09:28
55+45+75+45+85=305,和54748有什么关系呢?而54748的十六进制为D5DC,内存表示只有两个字节,顺序为DC D5,和54748也没有什么关系啊。如果是ASC字符显然也不对,因为数字ASC字符是从48至57,不可能个位数都为5的。不是很理解题意,还希望楼主再明示下。
#3
Valenciax2018-07-11 21:40
回复 2楼 wmf2014
只有本站会员才能查看附件,请 登录
#4
Valenciax2018-07-11 22:20
楼主毋须激奖法了,这个其实挺简单的,也不须什么技巧...
花了半小时,x86 16bit汇编代码少于100行,结果如下

只有本站会员才能查看附件,请 登录
#5
wmf20142018-07-12 08:16
回复 3楼 Valenciax
谢谢!
知道怎么回事了,这不就是变相的水仙花数?应该不难的,稍有难度的在于处理16位数加法溢出。
#6
Valenciax2018-07-12 20:53
回复 5楼 wmf2014
楼主的名字已经隐含了玄机.
#7
五朵金花2018-07-12 22:57
回复 6楼 Valenciax
机智喔~方便这位帅哥留下你的程序让大家欣赏下嘛
#8
五朵金花2018-07-12 22:58
回复 2楼 wmf2014
格式问题,等号右边都是5次方,抱歉
#9
Valenciax2018-07-14 06:43
楼主不要一味要求答案,先有自己的思路,试写一下,遇到问题提出来,再去寻求解决之道.

这题,不外是一次遍历,由10000-99999,在回圈中,分离abcde为独立数字,5次方之,累加,再和abced作比较.

python的代码最能表示这样的虚拟码,只用了6行
程序代码:

for i in range(10000,100000):
  N=str(i) ; sum=0
  for j in range(0,5):
    sum=sum+int(N[j])**5
  if i == sum :
    print(i,'=',N[0],'^5+',N[1],'^5+',N[2],'^5+',N[3],'^5+',N[4],'^5',sep='')


运行结果和90多行的汇编一样
只有本站会员才能查看附件,请 登录

红色是python代码,黄色是输出结果

楼主可以参考思路自行写写....

[此贴子已经被作者于2018-7-14 06:46编辑过]

#10
lxy78902018-07-30 08:01
1