一道有趣的数字填空题

一道数字填空题

在这里插入图片描述

将1-8填入以上空格中,找出所有满足条件的组合。
分析:
数值范围:1234-8765。利用枚举法,根据题意,乘数是5,最后一位数必定是5,所以可知,8765/5=1753。即乘子最大也只能取到这个值,所以枚举范围是1234-1753.
也可以通过命令unique(floor((1234:8765)/5))得到。

接下来进行循环过程遇到的问题即如何将四位数的各个位数独立成数。
这里有个小技巧,需要将字符串变成列向量,这样就可以变成单独的字符,如果是横向量的话,还是原数。

A = 1234;
num2str(A)’ 
4×1 char 数组
	 '1'
	 '2'
	 '3'
	 '4'
str2num(ans)
ans =
	1
	2
	3
	4

循环中的判断条件:
unique(vec)==8, 即8个位数在除重以后还有8个不同数字,即1-8。与此同时,要避免数字中出现0,这样可以通过sum(vec8==0)==0 来判断。
结合起来:if (length(unique(vec8)) == 8) && ( sum(vec8==0)==0)
经过判断,可以得出所有满足条件的数字组合:

乘子:
        1287        1297        1647        1729

结果:
        6435        6485        8235        8645
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值