fork download
  1. import java.math.BigInteger;
  2. import java.util.HashMap;
  3.  
  4. class Ideone
  5. {
  6. static HashMap<Integer, HashMap<Integer, RationalNumber>> cache = new HashMap<>();
  7.  
  8. public static void main(String[] args)
  9. {
  10. for (int i = 0; i < 128; i++)
  11. System.out.printf("b(%d) = %s%n", i, b(i));
  12. }
  13.  
  14. static RationalNumber b(int n)
  15. {
  16. return b(n, 1);
  17. }
  18.  
  19. static RationalNumber b(int n, int m)
  20. {
  21. HashMap<Integer, RationalNumber> map = cache.get(n);
  22. if (map == null) cache.put(n, map = new HashMap<>());
  23. RationalNumber rn = map.get(m);
  24. if (rn != null) return rn;
  25. if (n == 0) return new RationalNumber(BigInteger.ONE, BigInteger.valueOf(m));
  26. RationalNumber i = b(n - 1, m);
  27. RationalNumber j = b(n - 1, m + 1);
  28. BigInteger a = i.a.multiply(j.b).subtract(j.a.multiply(i.b)).multiply(BigInteger.valueOf(m));
  29. BigInteger b = i.b.multiply(j.b);
  30. rn = new RationalNumber(a, b);
  31. map.put(m, rn);
  32. return rn;
  33. }
  34.  
  35. static class RationalNumber
  36. {
  37. final BigInteger a, b;
  38.  
  39. RationalNumber(BigInteger a, BigInteger b)
  40. {
  41. BigInteger gcd = a.gcd(b);
  42. a = a.divide(gcd);
  43. b = b.divide(gcd);
  44. if (b.compareTo(BigInteger.ZERO) < 0)
  45. {
  46. a = a.negate();
  47. b = b.negate();
  48. }
  49. this.a = a;
  50. this.b = b;
  51. }
  52.  
  53. @Override
  54. public String toString()
  55. {
  56. return b.equals(BigInteger.ONE) ? a.toString() : String.format("%d/%d", a, b);
  57. }
  58. }
  59. }
Success #stdin #stdout 0.33s 320576KB
stdin
Standard input is empty
stdout
b(0) = 1
b(1) = 1/2
b(2) = 1/6
b(3) = 0
b(4) = -1/30
b(5) = 0
b(6) = 1/42
b(7) = 0
b(8) = -1/30
b(9) = 0
b(10) = 5/66
b(11) = 0
b(12) = -691/2730
b(13) = 0
b(14) = 7/6
b(15) = 0
b(16) = -3617/510
b(17) = 0
b(18) = 43867/798
b(19) = 0
b(20) = -174611/330
b(21) = 0
b(22) = 854513/138
b(23) = 0
b(24) = -236364091/2730
b(25) = 0
b(26) = 8553103/6
b(27) = 0
b(28) = -23749461029/870
b(29) = 0
b(30) = 8615841276005/14322
b(31) = 0
b(32) = -7709321041217/510
b(33) = 0
b(34) = 2577687858367/6
b(35) = 0
b(36) = -26315271553053477373/1919190
b(37) = 0
b(38) = 2929993913841559/6
b(39) = 0
b(40) = -261082718496449122051/13530
b(41) = 0
b(42) = 1520097643918070802691/1806
b(43) = 0
b(44) = -27833269579301024235023/690
b(45) = 0
b(46) = 596451111593912163277961/282
b(47) = 0
b(48) = -5609403368997817686249127547/46410
b(49) = 0
b(50) = 495057205241079648212477525/66
b(51) = 0
b(52) = -801165718135489957347924991853/1590
b(53) = 0
b(54) = 29149963634884862421418123812691/798
b(55) = 0
b(56) = -2479392929313226753685415739663229/870
b(57) = 0
b(58) = 84483613348880041862046775994036021/354
b(59) = 0
b(60) = -1215233140483755572040304994079820246041491/56786730
b(61) = 0
b(62) = 12300585434086858541953039857403386151/6
b(63) = 0
b(64) = -106783830147866529886385444979142647942017/510
b(65) = 0
b(66) = 1472600022126335654051619428551932342241899101/64722
b(67) = 0
b(68) = -78773130858718728141909149208474606244347001/30
b(69) = 0
b(70) = 1505381347333367003803076567377857208511438160235/4686
b(71) = 0
b(72) = -5827954961669944110438277244641067365282488301844260429/140100870
b(73) = 0
b(74) = 34152417289221168014330073731472635186688307783087/6
b(75) = 0
b(76) = -24655088825935372707687196040585199904365267828865801/30
b(77) = 0
b(78) = 414846365575400828295179035549542073492199375372400483487/3318
b(79) = 0
b(80) = -4603784299479457646935574969019046849794257872751288919656867/230010
b(81) = 0
b(82) = 1677014149185145836823154509786269900207736027570253414881613/498
b(83) = 0
b(84) = -2024576195935290360231131160111731009989917391198090877281083932477/3404310
b(85) = 0
b(86) = 660714619417678653573847847426261496277830686653388931761996983/6
b(87) = 0
b(88) = -1311426488674017507995511424019311843345750275572028644296919890574047/61410
b(89) = 0
b(90) = 1179057279021082799884123351249215083775254949669647116231545215727922535/272118
b(91) = 0
b(92) = -1295585948207537527989427828538576749659341483719435143023316326829946247/1410
b(93) = 0
b(94) = 1220813806579744469607301679413201203958508415202696621436215105284649447/6
b(95) = 0
b(96) = -211600449597266513097597728109824233673043954389060234150638733420050668349987259/4501770
b(97) = 0
b(98) = 67908260672905495624051117546403605607342195728504487509073961249992947058239/6
b(99) = 0
b(100) = -94598037819122125295227433069493721872702841533066936133385696204311395415197247711/33330
b(101) = 0
b(102) = 3204019410860907078243020782116241775491817197152717450679002501086861530836678158791/4326
b(103) = 0
b(104) = -319533631363830011287103352796174274671189606078272738327103470162849568365549721224053/1590
b(105) = 0
b(106) = 36373903172617414408151820151593427169231298640581690038930816378281879873386202346572901/642
b(107) = 0
b(108) = -3469342247847828789552088659323852541399766785760491146870005891371501266319724897592306597338057/209191710
b(109) = 0
b(110) = 7645992940484742892248134246724347500528752413412307906683593870759797606269585779977930217515/1518
b(111) = 0
b(112) = -2650879602155099713352597214685162014443151499192509896451788427680966756514875515366781203552600109/1671270
b(113) = 0
b(114) = 21737832319369163333310761086652991475721156679090831360806110114933605484234593650904188618562649/42
b(115) = 0
b(116) = -309553916571842976912513458033841416869004128064329844245504045721008957524571968271388199595754752259/1770
b(117) = 0
b(118) = 366963119969713111534947151585585006684606361080699204301059440676414485045806461889371776354517095799/6
b(119) = 0
b(120) = -51507486535079109061843996857849983274095170353262675213092869167199297474922985358811329367077682677803282070131/2328255930
b(121) = 0
b(122) = 49633666079262581912532637475990757438722790311060139770309311793150683214100431329033113678098037968564431/6
b(123) = 0
b(124) = -95876775334247128750774903107542444620578830013297336819553512729358593354435944413631943610268472689094609001/30
b(125) = 0
b(126) = 5556330281949274850616324408918951380525567307126747246796782304333594286400508981287241419934529638692081513802696639/4357878
b(127) = 0