动脑筋 + 动脑筋 + 动脑筋 + …… + 动脑筋 = 科学画报
2016-07-22 12:02
375 查看
是一道动脑筋题,来源于科学画报的公众账号:动脑筋 + 动脑筋 + …… + 动脑筋 = 科学画报上述等式中,如果不同汉字表示不同的一位数的自然数(0~9),请问在等式成立的前提下,最多可以有多少个“动脑筋”?这是有奖竞猜 所以就奔着这个奖做了一下(贪心是我的天性么?咩哈哈)!动手一做,冥思苦想一番 怎么都想不到合适的一组 沃趣,瞬间觉得自己的智商low爆了!唉,只能交给计算机了(人工智能都可以实现,憋说这个小问题了)。吭哧吭哧编了个matlab小程序实现了结果,并在下面附上小程序 代码1 和代码2(对代码1的改进)运行结果:
最多可以有95个动脑筋 9785/103=95哈哈 最后希望我能中奖!!! 感谢计算机 感谢图灵 ~~啦啦啦啦 感谢党 让我变成码农~
low low 的代码 1
<span style="font-size:18px;">%%%%%%%%%%%%%%%%%%% % 动脑筋 + 动脑筋 + 动脑筋 + …… + 动脑筋 = 科学画报 %上述等式中,如果不同汉字表示不同的一位数的自然数(0~9), %请问在等式成立的前提下,最多可以有多少个“动脑筋”? %author by 【dcx】 %Copyright 2016.07.22 Xi'an %%%%%%%%%%%%%%%%%% %% %动脑筋=abc 科学画报=defg 这7个数分别来自 0~9中的任意1个自然数 %但是 这个七个数各不相同 同时 a c d 不能为0 故 编程如下 %%%% %% clc; clear; l=604800; %循环次数 排列组合 A10(7)=10*9*8*7*6*5*4=604800 i=1; k=1; mx=[]; %存放倍数 C=[];%存放 defg,abc while i<=l s=[0:9]; ss=[1:9];% 为了a c d从中随机取 flag=0; n=length(s);%数组长度 %% a 不能为 0 na=length(ss); ia=ceil(rand(1,1)*na) ;%随机获取 a=ss(ia); s(ia+1)=[]; %释放掉 ss(ia)=[]; %释放掉 %% b nb=length(s); ib=ceil(rand(1,1)*nb) ; b=s(ib); s(ib)=[]; if b~=0 ss(ib-1)=[]; else flag=1; %0被取走了 end %% c 不能为 0 nc=length(ss); ic=ceil(rand(1,1)*nc) ;%随机获取缩放系数 c=ss(ic); if flag==1 ss(ic)=[]; s(ic)=[]; else ss(ic)=[]; s(ic+1)=[]; end %% d 不能为0 nd=length(ss); id=ceil(rand(1,1)*nd) ;%随机获取缩放系数 d=ss(id); if flag==1 ss(id)=[]; s(id)=[]; else ss(id)=[]; s(id+1)=[]; end %% e ne=length(s); ie=ceil(rand(1,1)*ne) ; e=s(ie); s(ie)=[]; %% f nf=length(s); iF=ceil(rand(1,1)*nf) ; f=s(iF); s(iF)=[]; %% g ng=length(s); ig=ceil(rand(1,1)*ng) ; g=s(ig); s(ig)=[]; %% 获取满足条件的 %A=abc; %B=defg; A=a*100+b*10+c; %abc B=d*1000+e*100+f*10+g;%defg if mod(B,A)==0 % defg是abc的整数倍,则取余为0 C=[C;B,A]; %存下满足条件的 科学画报和动脑筋 k=k+1; mx=[mx,(B/A)]; end i=i+1; end disp('最多可以有的动脑筋数:') max(mx)</span>
<span style="font-size:18px;">disp('对应的科学画报和动脑筋是:') C(find(mx==max(mx)),:) </span>
<strong><span style="color:#ff0000;">改进的代码2</span></strong>
</span></p><p><span style="font-size:18px"></span><pre name="code" class="plain">clc;clear;l=604800; %循环次数 排列组合 A10(7)=10*9*8*7*6*5*4=604800i=1;k=1;mx=[]; %存放倍数C=[];%存放 defg,abcwhile i<=ls=[0:9];% b e f g 可以随意在这里取ss=[1:9];% a c d 不能为0 在这里取%先取 a c d[a,s,ss]=num(s,ss);[c,s,ss]=num(s,ss);[d,s,ss]=num(s,ss);%再去 b e f g[b,s]=num1(s);[e,s]=num1(s);[f,s]=num1(s);[g,s]=num1(s);A=a*100+b*10+c; %abcB=d*1000+e*100+f*10+g;%defgif mod(B,A)==0 % defg是abc的整数倍,则取余为0C=[C;B,A]; %存下满足条件的 科学画报和动脑筋k=k+1;mx=[mx,(B/A)];endi=i+1;enddisp('最多可以有的动脑筋数:')max(mx)disp('对应的科学画报和动脑筋是:')x=find(mx==max(mx));C(x(1),:)
函数 num
function [y,s,ss]=num(s,ss)n=length(ss);i=ceil(rand(1,1)*n) ;%随机获取a=ss(i);s(i+1)=[]; %释放掉ss(i)=[]; %释放掉y=a;函数 num1
function [y,s]=num1(s)n=length(s);i=ceil(rand(1,1)*n) ;e=s(i);s(i)=[];y=e;
相关文章推荐
- nodejs与Sublime相结合
- hdu5734 Acperience(数学)
- 基于Metronic的Bootstrap开发框架经验总结(6)--对话框及提示框的处理和优化
- FatMouse' Trade
- 【Android】dip和px之间到底如何转换
- JSP取得绝对路径(未测试)
- 最严厉的大数据招标评判标准
- Spark算子:RDD行动Action操作(2)–take、top、takeOrdered
- golang实现http服务器处理静态文件示例
- 数组的clone()方法
- 45 个非常有用的 Oracle 查询语句(未测试)
- hdu5745 字符串匹配 多校2.12
- mysql分区
- Ajax传递给后台值得做法
- C++中嵌入python程序——使用API接口,从函数到类
- 一个Java实现的简单的多个客户端聊天程序(未测试)
- mfc combo box控件的使用及探究
- Swift UILable 设置内边距实例代码
- Rsync同步不需要密码的绝对可行版本!
- thinkphp php7 Cannot use 'String' as class name as it is reserved