![]() |
[求助]HELP HElp help
我想用matlab做下面的一个问题:
找出所有由1-9这9个数排列而成的并且还是3的13次方的倍数的9位数。 我用其他语言已经实现,但是因为刚接触MATLAB,还没有用它实现。还望高手指教。 我的EMAIL:[email protected] QQ:814663606. 谢了。 |
呵呵,终于搞定了。下面是程序。
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 |
數字可以重複出現??
|
[QUOTE=shiqiang;7318]呵呵,终于搞定了。下面是程序。
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 &...[/QUOTE] 想請問 b=int2str(a); n=length(b); 為啥要把a轉成字串 並看他的長度呢? c=(b-48)|0; 48是怎看的 還有後面的 if 迴圈 都不太懂@@ 能指導一下嗎:cool: |
题目的要求是九位数,所以必须要有一个语句来检测该数字是不是九位数字,这样的话,单个的数字是不能通过matlab现有的命令得到长度的,故将数字转化成字符串这样就可以运用matlab现有的命令length来检测该字符串的长度了,这样就实现了就为数字的检测。
程序中的b是一个字符串,在ASCII码表中,数字与其相应的码值有一个48的差值,故剪掉48后这样原来的数字a分解为一个由每一位组成的字符串了。可以进行逻辑运算了。 |
[QUOTE=shiqiang;7387]题目的要求是九位数,所以必须要有一个语句来检测该数字是不是九位数字,这样的话,单个的数字是不能通过matlab现有的命令得到长度的,故将数字转化成字符串这样就可以运用matlab现有的命令length来检测该字符串的长度了,这样就实现了就为数字的检测。
程序中的b是一个字符串,在ASCII码表中,...[/QUOTE] 大概了解了@@ 感謝 不過題目1~9排列 應該是想取不重複出現吧 即1~9數字調順序~~ 我是這樣覺得的 呵呵 |
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 |
以上是数字不重复出现的程序。
|
[QUOTE=fgabertb;7332]數字可以重複出現??...[/QUOTE]
既然是排列就当然不能重复出现喽,你后来的猜想正如楼下有人说的是对的。可以用P = perms(v)来做,不过运算量相对较大。我打算用a=123456789/3^13,b=987654321/3^13.然后设c,令a<c<b,那么要求的9位数i=3^13*c,只需运算几百次。再然后判断 i 中是否有重复元素。但是,我就是在这个地方停住了。 |
[QUOTE=shiqiang;7398]以上是数字不重复出现的程序。...[/QUOTE]
谢啦,非常感谢。恍然大悟啊…… |
所有时间均为北京时间。现在的时间是 04:41。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.