Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-03-26, 14:08   #1
xylee
初级会员
 
注册日期: 2008-03-26
年龄: 36
帖子: 5
声望力: 0
xylee 正向着好的方向发展
默认 [求助]HELP HElp help

我想用matlab做下面的一个问题:
找出所有由1-9这9个数排列而成的并且还是3的13次方的倍数的9位数。
我用其他语言已经实现,但是因为刚接触MATLAB,还没有用它实现。还望高手指教。
我的EMAIL:[email protected]
QQ:814663606.
谢了。
xylee 当前离线   回复时引用此帖
旧 2008-03-26, 19:14   #2
shiqiang
高级会员
 
shiqiang 的头像
 
注册日期: 2008-02-26
年龄: 38
帖子: 158
声望力: 25
shiqiang 身上有一圈迷人的光环哦shiqiang 身上有一圈迷人的光环哦shiqiang 身上有一圈迷人的光环哦
默认

呵呵,终于搞定了。下面是程序。

x=1;
while x<10^9/3^13
a=x*3^13;
b=int2str(a);
n=length(b);
x=x+1;
c=(b-48)|0;
if n==9 & all(c)==1
fprintf('%d\n',a)
end
end
__________________
学我想学,用我所学。:lovely:
shiqiang 当前离线   回复时引用此帖
旧 2008-03-26, 20:14   #3
fgabertb
普通会员
 
注册日期: 2008-03-25
年龄: 40
帖子: 58
声望力: 19
fgabertb 正向着好的方向发展
默认

數字可以重複出現??
fgabertb 当前离线   回复时引用此帖
旧 2008-03-27, 16:36   #4
fgabertb
普通会员
 
注册日期: 2008-03-25
年龄: 40
帖子: 58
声望力: 19
fgabertb 正向着好的方向发展
默认

引用:
作者: shiqiang 查看帖子
呵呵,终于搞定了。下面是程序。

x=1;
while x<10^9/3^13
a=x*3^13;
b=int2str(a);
n=length(b);
x=x+1;
c=(b-48)|0;
if n==9 &...
想請問
b=int2str(a);
n=length(b);
為啥要把a轉成字串 並看他的長度呢?
c=(b-48)|0;
48是怎看的
還有後面的 if 迴圈 都不太懂@@
能指導一下嗎
fgabertb 当前离线   回复时引用此帖
旧 2008-03-27, 16:47   #5
shiqiang
高级会员
 
shiqiang 的头像
 
注册日期: 2008-02-26
年龄: 38
帖子: 158
声望力: 25
shiqiang 身上有一圈迷人的光环哦shiqiang 身上有一圈迷人的光环哦shiqiang 身上有一圈迷人的光环哦
默认

题目的要求是九位数,所以必须要有一个语句来检测该数字是不是九位数字,这样的话,单个的数字是不能通过matlab现有的命令得到长度的,故将数字转化成字符串这样就可以运用matlab现有的命令length来检测该字符串的长度了,这样就实现了就为数字的检测。
程序中的b是一个字符串,在ASCII码表中,数字与其相应的码值有一个48的差值,故剪掉48后这样原来的数字a分解为一个由每一位组成的字符串了。可以进行逻辑运算了。
__________________
学我想学,用我所学。:lovely:
shiqiang 当前离线   回复时引用此帖
旧 2008-03-27, 17:00   #6
fgabertb
普通会员
 
注册日期: 2008-03-25
年龄: 40
帖子: 58
声望力: 19
fgabertb 正向着好的方向发展
默认

引用:
作者: shiqiang 查看帖子
题目的要求是九位数,所以必须要有一个语句来检测该数字是不是九位数字,这样的话,单个的数字是不能通过matlab现有的命令得到长度的,故将数字转化成字符串这样就可以运用matlab现有的命令length来检测该字符串的长度了,这样就实现了就为数字的检测。
程序中的b是一个字符串,在ASCII码表中,...
大概了解了@@ 感謝
不過題目1~9排列 應該是想取不重複出現吧
即1~9數字調順序~~ 我是這樣覺得的 呵呵
fgabertb 当前离线   回复时引用此帖
旧 2008-03-27, 17:32   #7
shiqiang
高级会员
 
shiqiang 的头像
 
注册日期: 2008-02-26
年龄: 38
帖子: 158
声望力: 25
shiqiang 身上有一圈迷人的光环哦shiqiang 身上有一圈迷人的光环哦shiqiang 身上有一圈迷人的光环哦
默认

x=1;
while x<10^9/3^13
a=x*3^13;
b=int2str(a);
n=length(b);
y=sort(b);
z='123456789';
x=x+1;
c=(b-48)|0;
if n==9 & all(c)==1 & y==z
fprintf('%d\n',a)
end
end
__________________
学我想学,用我所学。:lovely:
shiqiang 当前离线   回复时引用此帖
旧 2008-03-27, 17:35   #8
shiqiang
高级会员
 
shiqiang 的头像
 
注册日期: 2008-02-26
年龄: 38
帖子: 158
声望力: 25
shiqiang 身上有一圈迷人的光环哦shiqiang 身上有一圈迷人的光环哦shiqiang 身上有一圈迷人的光环哦
默认

以上是数字不重复出现的程序。
__________________
学我想学,用我所学。:lovely:
shiqiang 当前离线   回复时引用此帖
旧 2008-03-27, 20:33   #9
xylee
初级会员
 
注册日期: 2008-03-26
年龄: 36
帖子: 5
声望力: 0
xylee 正向着好的方向发展
默认

引用:
作者: fgabertb 查看帖子
數字可以重複出現??...
既然是排列就当然不能重复出现喽,你后来的猜想正如楼下有人说的是对的。可以用P = perms(v)来做,不过运算量相对较大。我打算用a=123456789/3^13,b=987654321/3^13.然后设c,令a<c<b,那么要求的9位数i=3^13*c,只需运算几百次。再然后判断 i 中是否有重复元素。但是,我就是在这个地方停住了。
xylee 当前离线   回复时引用此帖
旧 2008-03-27, 20:38   #10
xylee
初级会员
 
注册日期: 2008-03-26
年龄: 36
帖子: 5
声望力: 0
xylee 正向着好的方向发展
默认

引用:
作者: shiqiang 查看帖子
以上是数字不重复出现的程序。...
谢啦,非常感谢。恍然大悟啊……
xylee 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
【讨论】matlab遗传算法应用 dushulang MATLAB论坛 2 2008-05-16 23:09
[求助]用小波变换法进行心电信号消噪 wxp MATLAB论坛 0 2008-04-30 08:48
[求助]信道函数ricianchan zhoujoe MATLAB论坛 0 2008-04-29 17:30
matlab 中反函数运算。 zhanggongrui MATLAB论坛 0 2008-04-29 00:03
【求助】求教大虾:如何创建一个维度为N的矩阵 ink1219 MATLAB论坛 0 2007-08-11 18:14


所有时间均为北京时间。现在的时间是 12:53


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.