- 注册时间
- 2009-8-4
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 351
- 在线时间
- 小时
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?欢迎注册
×
大家好,这原本是一道projecteuler上的题,原本不适合公开讨论。但自己实在没看明白,忍不住想找个地方问问,就想到了这里,如果不方便,请版主删掉。
原题连接http://projecteuler.net/problem=383
原题如下:
$F(n)=x$ ,满足$5^x$ 整除 $n$,且$x$是最大的这样的数。如 $F(625000)=7$
$T(n) =y$ ,$y$是所有$1$到$n$之间满足$F[(2*i - 1)!] < 2*F(i !) $的$i$的个数。如$T(10^3)=68$,$T(10^9)=2408210$
问题是求$T(10^18)$
第一楼的算法很特别,但我断断续续看了很久还是不明白他是怎么计数的
因为
$F(n!) = \sum_{i=1}^{i=k}\frac{n}{5^i} 5^k <= n ;5^{k+1} > n$
将$2 * F(n!) $和$F[(2*i-1)!]$ 写成上面的形式
$\frac{2*n}{5^i} - \frac{2*i-1}{5^i} = {(1, 5^k | n) ,(0 ,other) ,(-1 , 5^k !| n & [(2*n-1)/5^k] " is odd"):}$
因此比较$2*F(i!)$与$F[(2*i-1)!]$可以比较对象项之差中$-1$和$+1$出现的次数
假设$2*n-1$写成五进制具有如下形式
$a_{n}a_{n-1}\cdots{a_l}44444 $ 则对应差中$1$会出现$l$次
$0$的出现对差没有影响
$-1$只需要 $k>l$ 且满足$a_{n}a_{n-1}\cdots{a_k}$为奇数即可
因此满足$2*F(i!) > F[(2*i-1)!]$
的$2*i-1$写成五进制后具有某种形式,怎么快速的找到某一范围内的具有这种形式的数的个数呢? |
|