hdu Count the Trees
2011-07-31 10:04
435 查看
CounttheTrees |
TimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others) |
TotalSubmission(s):135AcceptedSubmission(s):102 |
[align=left]ProblemDescription[/align] AnothercommonsocialinabilityisknownasACM(AbnormallyCompulsiveMeditation).Thispsychologicaldisorderissomewhatcommonamongprogrammers.Itcanbedescribedasthetemporary(althoughfrequent)lossofthefacultyofspeechwhenthewholepowerofthebrainisappliedtosomethingextremelyinterestingorchallenging. Juanisaverygiftedprogrammer,andhasaseverecaseofACM(heevenparticipatedinanACMworldchampionshipafewmonthsago).Lately,hislovedonesareworriedabouthim,becausehehasfoundanewexcitingproblemtoexercisehisintellectualpowers,andhehasbeenspeechlessforseveralweeksnow.Theproblemisthedeterminationofthenumberofdifferentlabeledbinarytreesthatcanbebuiltusingexactlyndifferentelements. Forexample,givenoneelementA,justonebinarytreecanbeformed(usingAastherootofthetree).Withtwoelements,AandB,fourdifferentbinarytreescanbecreated,asshowninthefigure. Ifyouareabletoprovideasolutionforthisproblem,Juanwillbeabletotalkagain,andhisfriendsandfamilywillbeforevergrateful. |
[align=left]Input[/align] Theinputwillconsistofseveralinputcases,oneperline.Eachinputcasewillbespecifiedbythenumbern(1≤n≤100)ofdifferentelementsthatmustbeusedtoformthetrees.Anumber0willmarktheendofinputandisnottobeprocessed. |
[align=left]Output[/align] Foreachinputcaseprintthenumberofbinarytreesthatcanbebuiltusingthenelements,followedbyanewlinecharacter. |
[align=left]SampleInput[/align]1 2 10 25 0 |
[align=left]SampleOutput[/align]1 4 60949324800 75414671852339208296275849248768000000 给定n个元素,求组成的树的不同的结构的个数。 分析:元素的排列方式为n!种,树的结构不同形式为卡特兰数C(n), 所以:总共的数的不同结构为n!*C(n); importjava.util.*; importjava.math.*; publicclassMain{ publicstaticvoidmain(String[]args){ Scannercin=newScanner(System.in); BigDecimal[]a=newBigDecimal[101]; BigDecimal[]kt=newBigDecimal[101]; BigDecimalb,n; intk; a[0]=BigDecimal.valueOf(1); for(inti=1;i<101;i++){ b=a[i-1].multiply(BigDecimal.valueOf(i)); a[i]=b; } kt[1]=BigDecimal.valueOf(1); for(inti=2;i<101;i++){ n=BigDecimal.valueOf(i); b=BigDecimal.valueOf(4).multiply(n); b=b.subtract(BigDecimal.valueOf(2)); n=n.add(BigDecimal.valueOf(1)); b=b.multiply(kt[i-1]); kt[i]=b.divide(n); } while(cin.hasNext()){ k=cin.nextInt(); if(k==0)break; b=a[k].multiply(kt[k]); System.out.println(b); } } } |
相关文章推荐
- hdu-1131 Count the trees
- ACM刷题之HDU————Count the Trees
- HDU - 1131 Count the Trees
- HDU 1131 Count the Trees
- hdu 1131 Count the Trees Java 大数
- hdu 1131 Count the Trees
- HDU 1131 Count the Trees 卡特兰数的应用
- hdu 1131 Count the Trees
- hdu 1131 Count the Trees (卡特兰数的应用)
- hdu 1131 Count the Trees (卡特兰数+java大数)
- HDU 1131 Count the trees
- hdu 1131 Count the Trees 卡特兰数+java
- hdu 1131 Count the Trees 卡特兰数+java
- HDOJ HDU 1131 Count the Trees
- hdu 1131 Count the Trees(catalan数的应用)
- HDU 1131 Count the Trees
- 【HDU】1131 - Count the Trees(组合数学 - 卡特兰数 & java)
- hdu 1131 Count the Trees
- hdu 1131 Count the Trees
- hdu 1131 Count the Trees