问题61:
Find the sum of the only set of six 4-digit figurate numbers with a cyclic property.
object Euler061 extends Application {
val fun = Array( (n:Int) => n*(n+1)/2,
(n:Int) => n*n,
(n:Int) => n*(3*n-1)/2,
(n:Int) => n*(2*n-1),
(n:Int) => n*(5*n-3)/2,
(n:Int) => n*(3*n-2)
)
def getNum(i:Int):Seq[(Int,Int)] = {
val st = Stream.from(1).map{ n => (fun(i)(n),i) }
st.dropWhile{ _._1 < 1000 }.takeWhile{ _._1 < 10000 }
}
val num = (0 until 6).flatMap(getNum).toArray
val lst = new Array[List[Int]](num.size)
for(i <- 0 until num.size){
val tail = num(i)._1%100
val idx = num(i)._2
var xs:List[Int] = Nil
for(j <- 0 until num.size){
val it = num(j)
if(idx != it._2 && tail == it._1/100) xs = j::xs
}
lst(i) = xs
}
def sum(n:Int):Int = {
def sum0(t:Int,d:Int,xs:List[Int]):Int = {
if(d == 6) return if(t==n) 0 else -1
else{
if(xs.contains(num(t)._2)) return -1
val ys = num(t)._2::xs
if(lst(t).exists{ sum0(_,d+1,ys) >=0 }){
num(t)._1 + lst(t).map{ sum0(_,d+1,ys) }.find{ _ >=0 }.get
}
else -1
}
}
sum0(n,0,Nil)
}
println(Stream.from(0).map(sum).find{ _>=0 }.get)
}
问题62:
Find the smallest cube for which exactly five permutations of its digits are cube.
import java.util.Arrays.sort
import java.lang.Math.cbrt
object Euler062 extends Application {
val MAX = 5
var res = 345L
var cnt = 0
do{
res += 1
val cube = res*res*res
val list = cube.toString.toArray
sort(list)
val uper = cbrt(list.foldRight(0L){ (c,s) => 10*s+c-'0' }).toLong
cnt = 1
var n = res + 1
while(n <= uper){
val array = (n*n*n).toString.toArray
sort(array)
if(list sameElements array) cnt += 1
n += 1
}
}while(cnt != MAX)
println(res*res*res)
}
问题63:
How many n-digit positive integers exist which are also an nth power?
import scala.Math._
object Euler063 extends Application {
val MAX = (log(10)/(log(10)-log(9))).intValue
var cnt = 0
for(p <- 1 to MAX;n <- 1 to 9){
val b = n:BigInt
if(b.pow(p).toString.size == p) cnt += 1
}
println(cnt)
}
问题64:
How many continued fractions for N ≤ 10000 have an odd period?
import eastsun.math.Util._
object Euler064 extends Application {
val res = 1.to(10000).filter{ continuedFractionOfSqrt(_,null) % 2 ==1 }.length
println(res)
}
问题65:
Find the sum of digits in the numerator of the 100th convergent of the continued fraction for e.
object Euler065 extends Application {
def a(n:Int) =
if(n == 1) 2
else if(n%3 == 0) 2*n/3
else 1
def b(n:Int):(BigInt,BigInt) = {
var num:BigInt = a(n)
var den:BigInt = 1
for(i <- 1 until n){
var t = num*a(n-i) + den
den = num
num = t
}
(num,den)
}
var (x,y) = b(100)
var res = x.toString.map{ _-'0' }.foldLeft(0){ _+_ }
println(res)
}
问题66:
Investigate the Diophantine equation x^2 − D*y^2 = 1.
import eastsun.math.Util._
object Euler066 extends Application {
val buf = new Array[Int](1000)
var (res,max,d) = (2,3:BigInt,1)
while(d <= 1000){
val pd = continuedFractionOfSqrt(d,buf)
if(pd > 0){
val sq = Math.sqrt(d)
var (x0,y0) = (sq:BigInt,1:BigInt)
var (x1,y1) = ((buf(0)*sq+1):BigInt,buf(0):BigInt)
val cnt = if(pd%2 == 1) 2*pd-1 else pd-1
var idx = 1
while(idx < cnt){
var t = x1
var a = buf(idx%pd)
x1 = x1*a + x0
x0 = t
t = y1
y1 = y1*a + y0
y0 = t
idx += 1
}
if(x1 > max){
max = x1
res = d
}
}
d += 1
}
println(res)
}
问题67:
Using an efficient algorithm find the maximal sum in the triangle?
import scala.io.Source._
object Euler067 extends Application {
val num = fromFile("triangle.txt").getLines.map{ line =>
line.split("\\s+").map{ _.toInt }
}.toList.toArray
val path = new Array[Array[Int]](num.length)
for(i <- 0 until path.length) path(i) = new Array[Int](i+1)
for(i <- 0 until path.length) path(num.length-1)(i) = num(num.length-1)(i)
for{row <- (path.length - 2) to 0 by -1;
col <- 0 to row
} path(row)(col) = num(row)(col) +path(row+1)(col).max(path(row+1)(col+1))
println(path(0)(0))
}
问题68:
What is the maximum 16-digit string for a "magic" 5-gon ring?
import eastsun.math.Util._
object Euler068 extends Application {
val its = Array.range(1,10)
val buf = new Array[Int](10)
buf(0) = 10
do{
Array.copy(its,0,buf,1,9)
val sum = buf(8)+buf(9)+buf(1)
val tag = 0.until(8,2).forall{i => buf(i)+buf(i+1)+buf(i+3) == sum}
if(tag){
val idx = 0.until(10,2).foldLeft(0){ (i,j) => if(buf(i)<buf(j)) i else j }
val num = idx.until(idx+10,2).map{ i =>
buf(i%10)+""+buf((i+1)%10)+""+buf((i+3)%10)
}.mkString("")
println(num)
}
}while(nextPermutation(its))
}
问题69:
Find the value of n ≤ 1,000,000 for which n/φ(n) is a maximum.
import eastsun.math.Util._
object Euler069 extends Application {
var res = getPrimes(1000).foldLeft(1){(s,p) => if(s*p <= 1000000) s*p else s}
println(res)
}
问题70:
Investigate values of n for which φ(n) is a permutation of n.
import eastsun.math.Util._
import java.util.Arrays.binarySearch
import scala.util.Sorting._
object Euler070 extends Application {
val MAX = 10000000
val primes = getPrimes(MAX)
def isPrime(n:Int) = binarySearch(primes,n) >= 0
val phi = new Array[Int](MAX)
phi(1) = 1
var n = 2
var rate = 0.0
var res = 0
while(n < MAX){
if(isPrime(n)) phi(n) = n - 1
else{
var idx = 0
while(n%primes(idx) != 0) idx += 1
val p = primes(idx)
val s = n/p
phi(n) = if(s%p == 0) phi(s)*p else phi(s)*(p-1)
}
if(phi(n) > n*rate){
val pa = phi(n).toString.toArray
val pn = n.toString.toArray
quickSort(pa)
quickSort(pn)
if(pa sameElements pn){
rate = phi(n).floatValue/n
res = n
}
}
n += 1
}
println(res)
}
分享到:
相关推荐
在提供的压缩文件“project_euler解题表格.docx”中,很可能是博主Linuke分享了他的Project Euler解题过程和经验。这个表格可能包含了他对各个问题的思考、代码实现以及解决问题所花费的时间,对于其他学习者来说是...
标题 "下载Project Euler题目" 暗示了这个压缩包可能包含了与解决Project Euler问题相关的Java源代码。Project Euler是一个在线平台,提供了大量的数学和计算机科学问题,旨在提高编程技能和数学理解。这些问题通常...
【标题】"ProjectEuler1-16代码"所涉及的知识点主要集中在计算机编程和算法设计上,尤其针对初学者和编程爱好者。Project Euler是一个在线平台,它提供了一系列的数学和计算机科学问题,旨在通过解决这些问题来提升...
【标题】"Project Euler 第22题"是一个著名的编程挑战,源自Project Euler网站,这是一个鼓励人们通过编程解决数学和计算问题的在线平台。这道题目通常涉及到字符串处理、排序以及数学计算,旨在锻炼编程者的问题...
题目:Project Euler问题5——寻找最小公倍数 在Project Euler的问题集中,问题5要求我们找到能被1至20所有数字整除的最小正整数。这个问题实际上是在寻找这组数字的最小公倍数(LCM)。对于较小的参数值,如本例中...
【项目欧拉(Project Euler)】是一个非常受欢迎的在线数学和计算机编程挑战平台,它吸引着全球的程序员和数学爱好者参与。项目欧拉的问题通常涉及数学、算法和计算机科学,鼓励解决问题并学习新技能。本压缩包...
【标题】"project euler5.rar_ACM_project" 涉及的是ACM竞赛相关的编程项目,特别是Project Euler的第五部分。Project Euler是一个在线数学和计算机科学的挑战项目,旨在提高编程技能并解决复杂的数学问题。这个...
《ACM项目:Project Euler问题集解码》 在编程竞赛和算法研究领域,ACM(International Collegiate Programming Contest)项目具有极高的地位,而Project Euler则是其中一道独特的风景线。这个项目旨在挑战参赛者的...
《ACM项目:Project Euler第三部分解题代码详解》 Project Euler是一个著名的在线数学与计算机科学问题集,旨在挑战编程者的思维能力和算法技巧。在这个压缩包"project euler3.rar_ACM_project"中,包含了10个已经...
《使用汇编语言解决Project Euler问题的探索》 在IT领域,编程挑战是提升技能、锻炼思维的重要方式,其中Project Euler以其独特的数学与计算机科学相结合的特性,深受程序员喜爱。本项目聚焦于"Project Euler",它...
Project Euler 是一个在线平台,提供了一系列数学和计算机科学的挑战问题,旨在提高解题技巧,同时也为编程爱好者提供了练习和学习的机会。这个项目通常涉及到算法、数学和编程的结合,鼓励用户通过编写高效的代码来...
《MATLAB实现Project Euler问题详解》 Project Euler是一个著名的在线数学和计算机科学挑战平台,它提供了许多具有挑战性的问题,旨在提升编程技能和数学理解。本资料包“matlab用不同编程语言实现的各种Project ...
全部在linux下运行通过并得到结果,因为是个人所做,所以不保证是最优结果,仅供交流学习 因为是个人联系所做,所以代码中没有注释,不过我相信只要你真的有去思考题目也是能知道我为什么这样做 ...
"Project Euler: Project Euler 问题的解决方案"是一个与编程挑战相关的项目,主要集中在使用JavaScript解决数学和计算问题。Project Euler是一个著名的在线平台,它提供了一系列的数学和计算机科学问题,旨在提升...
《项目欧拉:多语言实现的ProjectEuler.net问题解决方案》 Project Euler是一个深受程序员喜爱的在线挑战平台,它提供了一系列涉及数学、计算机科学和算法的难题,旨在提高编程技能和解决问题的能力。这个名为...
欧拉计划(Project Euler)是一个在线平台,旨在通过一系列具有挑战性的数学和计算机科学问题来提升编程技巧。这些问题设计巧妙,通常需要运用到数学、算法和编程知识来解决。参与欧拉计划,不仅可以锻炼编程能力,...
项目欧拉解决方案该存储库包含我对 Project Euler (projecteuler.net) 上发现的编程问题的所有答案。 每个解决方案都是用 Java 编写的,旨在从命令行运行。 解决方案文件中将提供指向相关欧拉问题的链接。 某些解决...
在编程世界中,Project Euler 是一个著名的在线平台,它提供了大量的数学和计算机科学问题,旨在通过挑战参与者解决这些问题来提高其编程和问题解决能力。这个压缩包“Project-Euler:projecteuler.net 上问题的解决...
顾名思义,projecteuler-solutions是站点Project Euler的解决方案的集合。 该站点旨在为Euler项目提供完整而准确的解决方案清单。这个网站的目的是什么? 在一个棘手的问题上奋斗了数小时或数天之后,您最终可能会...
在这个压缩包“project-euler-master”中,很显然包含了作者对Project Euler问题的Python解决方案。 在Python编程语言中解决Project Euler问题,我们可以学习到许多关键的编程概念和技术。以下是一些可能涵盖的知识...