算法题,计算 0000 至 9999 中,不是零开头且不含 4 的总共有多少个数字?

2015-03-06 13:57:21 +08:00
 andybest
转为字串判断是否有点 low ?如何优雅的写出算法?
4678 次点击
所在节点    问与答
40 条回复
xjx0524
2015-03-06 13:59:45 +08:00
8*9*9*9=5832
9hills
2015-03-06 14:01:21 +08:00
LS还能不能好好玩耍了。。
andybest
2015-03-06 14:02:15 +08:00
@xjx0524 赞,结果正确,但这算法怎么理解呢
rrfeng
2015-03-06 14:03:32 +08:00
不是一个 4 位置的排列组合题吗……
warlock
2015-03-06 14:06:28 +08:00
好像高中时候的数学考试题
miao
2015-03-06 14:14:19 +08:00
@andybest
从0000到9999, 一共4位数字, 每一位出现的字符是0到9等十个符号.
首位不含9,0两个符号, 则首位出现的符号八个
余下第二位第三位第四位不含0,则余下每位出现的符号是九个
算下来就是8*9*9*9=5832
andybest
2015-03-06 14:15:11 +08:00
@miao 原来如此,高手啊!!!服了!
NewYear
2015-03-06 14:17:02 +08:00
@miao 你没发出来的时候我想了想,应该就是10进制变9进制,第一位因为不会形成10,所以多减一个1

然后就说刷新看看是不是有人回答了……哎
happywowwow
2015-03-06 14:17:43 +08:00
第一位可选1-3 5-9
第二、三、四位可选0-3 5-9
8*9*9*9
LZ的方法是太low了。。。
NewYear
2015-03-06 14:18:21 +08:00
@miao 另外楼主说的是不含4,不是不含9,嘿嘿,所以你的解答错误错误错误!
miao
2015-03-06 14:23:58 +08:00
@NewYear 不好意思, 打错, 首位是不含4和0.其他应该是没错的
BGLL
2015-03-06 15:21:35 +08:00
0000 至 9999 10000个数中不含某一位:

10*(1-((8/9)*(9/10)^0))=1
90*(1-((8/9)*(9/10)^1))=18
900*(1-((8/9)*(9/10)^2))=252
9000*(1-((8/9)*(9/10)^3))=3168

1+18+252+3168=3439

10000-3439=6561
finian
2015-03-06 15:55:35 +08:00
排列组合问题。。。楼主是想知道非0开不含4的4数域名有多少个吧?
BGLL
2015-03-06 15:57:41 +08:00
简化一下
BGLL
2015-03-06 16:02:54 +08:00
简化一下
M位连续数字中,某非0数字出现次数N
N = 9 * 10^(M-1) - 8 * 9 ^(M -1)

M N
1 1 (0~9中)
2 18 (10~99中)
3 252 (100~999中)
4 3168 (1000~9999中)
5 37512
6 427608
7 4748472
8 51736248
9 555626232
10 5900636088
................


算数字有几位M,再把0~M对应的N加起来....
wzxjohn
2015-03-06 16:04:18 +08:00
现在已经连这都叫算法题了么。。。初中数学啊。。。。。。。。。
raincious
2015-03-06 16:07:40 +08:00
@wzxjohn

function countNums()
{
return 5832;
}

希望你满意 :D
subpo
2015-03-06 17:50:47 +08:00
排列组合已经不太记得了。。
IgniteWhite
2015-03-06 17:58:31 +08:00
我一直以为这里都起码是大学生。。。
gladuo
2015-03-06 17:59:26 +08:00
@BGLL LZ不是0开头我的理解应该是必须是四位数。。。
就是1000 ~ 9999中不含4有多少。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/174913

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX