[中译] ProjectEuler 467 Superinteger

楼主: tml (流刑人形)   2014-04-17 05:27:07
467. Superinteger
http://projecteuler.net/problem=467
如果一整数n为另一整数s的子序列,则我们称s为n的延伸数。
意即,若s为n的延伸数,则可以借由删去s中的某些数字而得到n。
例如,2718281828是18828的延伸数,而314159则不是151的延伸数。
令p(n)为第n个质数、c(n)为第n个合数。例如,p(1) = 2、p(10) = 29、c(1) = 4以及
c(10) = 18。
{p(i) : i ≧ 1} = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, ...}
{c(i) : i ≧ 1} = {4, 6, 8, 9, 10, 12, 14, 15, 16, 18, ...}
令序列PD、CD各项分别为序列{p(i)}、{c(i)}各项的数字根。
(数字根是将一数字的每个位数相加,若和为两位以上则不断重复此步骤最后得到的数)
PD = {2, 3, 5, 7, 2, 4, 8, 1, 5, 2, ...}
CD = {4, 6, 8, 9, 1, 3, 5, 6, 7, 9, ...}
令P_n、C_n分别为将PD、CD的前n项接在一起所得到的数。
P_10 = 2357248152
C_10 = 4689135679
令f(n)为正整数中,同时为P_n和C_n的延伸数里的最小者。
例如,f(10) = 2357246891352679以及f(100) mod 1000000007 = 771661825。
请求出f(10000) mod 1000000007。

Links booklink

Contact Us: admin [ a t ] ucptt.com