fork(1) download
  1. class TriBonacci
  2. def initialize
  3. @mg = {0=>3, 1=>1, 2=>3}
  4. @mh = {0=>1, 1=>3, 2=>-1}
  5. end
  6.  
  7. def f(n)
  8. (5*g(n) + g(n+1) + 2*g(n+2)) / 22
  9. end
  10.  
  11. def g(n)
  12. return @mg[n] if @mg[n]
  13. return @mg[n] = @mg[n-3] + @mg[n-2] + @mg[n-1] if @mg[n-1] && @mg[n-2] && @mg[n-3]
  14. m = n / 2
  15. @mg[n] = n % 2 == 0 ? g(m)**2 - 2*h(m+1) : g(m)*g(m+1) + h(m) - h(m+1)
  16. end
  17.  
  18. def h(n)
  19. return @mh[n] if @mh[n]
  20. return @mh[n] = @mh[n-3] - @mh[n-2] - @mh[n-1] if @mh[n-1] && @mh[n-2] && @mh[n-3]
  21. m = n / 2
  22. @mh[n] = n % 2 == 0 ? h(m)*h(m+1) - g(m) + g(m+1) : h(m+1)**2 - 2*g(m)
  23. end
  24. end
  25.  
  26. n = 6500
  27. p TriBonacci.new.f(n)
Success #stdin #stdout 0.02s 7440KB
stdin
Standard input is empty
stdout
10295942761249560951654884818235634443645083079013895485003033738464592206078842702979511905556974066763359580357532761074484505301822956838065492535143573335465470190660329171001169215650085048473735882859532992583151300102507421881341131106459459791731771776607830868023018166697221087759926250378915639742908473641974451373897894600725434393391898620162846259941338385406390413476440205283520151428951534096906550080921373701577821852015291232720980922459626870432353648099091178554341527888792250748816494392077822223192500485782367347185822365735280923251791259964968390831481228649068393440001447834649878149174191669580403720214899714804826620188485468868351712618085612076841985161432371387295424244242417253352369937230402166681463585943047002123831529890495234996619475590161985711828943726465090991519674398548018234373288077044670427568398022848705255972180289622519587278926910474143183260330161091347927411799898339408199072650201929228112644163828534599246626097560882624424761519922064004654711800567468629839397585152128802967392809618226410617771267386216360577655917315378259764429309288503559413493509312816111310731181056612857095338345520747042997761752782621323258151910036890216169559086973789199320982761711775664032155829018296240637402436600781011050750417826629661268754218506133341601245173736291593314153982818630356348306490345312982155073137324287828655448084277225102743269203116696437729945772837172097029896070016126720409214481502756554563966497874918704583914446664652116122748879676897757117590310454110097598582578877267047160676262251786474457165720810592981604577240486327090344866121619600252434535404359328104238166004955672076195337860928759222320645051285486599485424334935367