Hướng dẫn giải của Point Connection Game in a Circle
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Lưu ý: Các code mẫu dưới đây chỉ mang tính tham khảo và có thể không AC được bài tập này
Code mẫu của flashmt
const fi=''; fo=''; base=1000000; digit=6; maxn=160; type bignum=array[0..30] of longint; var n:longint; a:array[0..maxn] of bignum; procedure multi(i:longint); var j,mem,t,x:longint; begin mem:=0; x:=4*i-2; a[i,0]:=a[i-1,0]; for j:=1 to a[i,0] do begin t:=a[i-1,j]*x+mem; a[i,j]:=t mod base; mem:=t div base; end; if mem>0 then begin inc(a[i,0]); a[i,a[i,0]]:=mem; end; end; procedure divide(i:longint); var j,mem,x,k:longint; t:bignum; begin mem:=0; k:=i+1; fillchar(t,sizeof(t),0); for j:=a[i,0] downto 1 do begin x:=a[i,j]+mem*base; if x<k then mem:=x else begin t[j]:=x div k; mem:=x mod k; end; end; for j:=a[i,0] downto 1 do if t[j]>0 then break; a[i,0]:=j; for j:=1 to a[i,0] do a[i,j]:=t[j]; end; procedure init; var i:longint; begin a[0,0]:=1; a[0,1]:=1; for i:=1 to maxn do begin multi(i); divide(i); end; end; procedure wf(re:bignum); var i,j,t:longint; s:string; begin for i:=re[0] downto 1 do begin if i<re[0] then begin str(re[i],s); t:=length(s); for j:=t+1 to digit do write(0); end; write(re[i]); end; writeln; end; begin assign(input,fi); reset(input); assign(output,fo); rewrite(output); init; readln(n); while n<>-1 do begin wf(a[n]); readln(n); end; close(output); close(input); end.
Code mẫu của happyboy99x
import java.math.BigInteger; import java.io.*; class MCIRGAME { public static void main(String argv[]) { try { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out)); BigInteger C[] = new BigInteger[151]; C[0] = BigInteger.ONE; for(int i = 0; i < 150; ++i) C[i+1] = C[i].multiply(BigInteger.valueOf(2*(2*i+1))).divide(BigInteger.valueOf(i+2)); for(int n; (n = Integer.parseInt(in.readLine())) != -1; out.write(C[n].toString()), out.newLine()); in.close(); out.close(); } catch (Exception ex) { ex.printStackTrace(); } } }
Code mẫu của ladpro98
const a:array[1..150] of string=('1', '2', '5', '14', '42', '132', '429', '1430', '4862', '16796', '58786', '208012', '742900', '2674440', '9694845', '35357670', '129644790', '477638700', '1767263190', '6564120420', '24466267020', '91482563640', '343059613650', '1289904147324', '4861946401452', '18367353072152', '69533550916004', '263747951750360', '1002242216651368', '3814986502092304', '14544636039226909', '55534064877048198', '212336130412243110', '812944042149730764', '3116285494907301262', '11959798385860453492', '45950804324621742364', '176733862787006701400', '680425371729975800390', '2622127042276492108820', '10113918591637898134020', '39044429911904443959240', '150853479205085351660700', '583300119592996693088040', '2257117854077248073253720', '8740328711533173390046320', '33868773757191046886429490', '131327898242169365477991900', '509552245179617138054608572', '1978261657756160653623774456', '7684785670514316385230816156', '29869166945772625950142417512', '116157871455782434250553845880', '451959718027953471447609509424', '1759414616608818870992479875972', '6852456927844873497549658464312', '26700952856774851904245220912664', '104088460289122304033498318812080', '405944995127576985730643443367112', '1583850964596120042686772779038896', '6182127958584855650487080847216336', '24139737743045626825711458546273312', '94295850558771979787935384946380125', '368479169875816659479009042713546950', '1440418573150919668872489894243865350', '5632681584560312734993915705849145100', '22033725021956517463358552614056949950', '86218923998960285726185640663701108500', '337485502510215975556783793455058624700', '1321422108420282270489942177190229544600', '5175569924646105559418940193995065716350', '20276890389709399862928998568254641025700', '79463489365077377841208237632349268884500', '311496878311103321137536291518809134027240', '1221395654430378811828760722007962130791020', '4790408930363303911328386208394864461024520', '18793142726809884575211361279087545193250040', '73745243611532458459690151854647329239335600', '289450081175264899454283846029490767264392230', '1136359577947336271931632877004667456667613940', '4462290049988320482463241297506133183499654740', '17526585015616776834735140517915655636396234280', '68854441132780194707888052034668647142985206100', '270557451039395118028642463289168566420671280440', '1063353702922273835973036658043476458723103404520', '4180080073556524734514695828170907458428751314320', '16435314834665426797069144960762886143367590394940', '64633260585762914370496637486146181462681535261000', '254224158304000796523953440778841647086547372026600', '1000134600800354781929399250536541864362461089950800', '3935312233584004685417853572763349509774031680023800', '15487357822491889407128326963778343232013931127835600', '60960876535340415751462563580829648891969728907438000', '239993345518077005168915776623476723006280827488229600', '944973797977428207852605870454939596837230758234904050', '3721443204405954385563870541379246659709506697378694300', '14657929356129575437016877846657032761712954950899755100', '57743358069601357782187700608042856334020731624756611000', '227508830794229349661819540395688853956041682601541047340', '896519947090131496687170070074100632420837521538745909320', '3533343320884635898708258511468514257188006702535057407320', '13927547459020991989083038404429289207944958458536245702640', '54906677482678910726192747555923159377475316999998660943100', '216489185503133990863274261791925599831188392742851863147080', '853702637172735926234421145556838686126761775155774328259240', '3366939372774715522158184331074634818182181954352680060985040', '13280705303722489004068393750349948449496384375502238018329880', '52391773216519910749994580850004383791591241114366627044787600', '206709359781542193322705891717290023323187260396682873976707440', '815663960219058384462569194343901173113117297781505394610791520', '3218959557293069695825496284821467129607123621602012360874730820', '12704920022590345879098861442746675573493602966676969141151592440', '50151000089172417943811295168736877263790538026356457136124707000', '197987426438993719534698504405274280676181776208398535128701017200', '781708976802233823680102715669100177152510806064194216284009188600', '3086748267372923303762456877257472494397093952150920751480446539600', '12190039767760866606383939871203238833805472726290924323643119385200', '48145535217206784075634048230802707999063631776107012034556858076000', '190174864107966797098754490511670696596301345515622697536499589400200', '751269297881058917464501210451062751843240026086509499359064493663600', '2968129521136642608343357241290264314659358135849980153205484311031600', '11727731278637465915893265197293239487190634585553580117543620936271200', '46343454246228695957965322150594252812285572152590760141906244022362000', '183149331181095806425878953139148487114152581147038684080813476376374624', '723875928001473901587997767169015449070222106438295751367024692344718752', '2861304849265668492891140780463352404986232263244287143198790516197234752', '11311095732253345760960290897769189975961199415637572612957718759342193629', '44718285453094622775889522153971216184032648852520635911693306722980765510', '176809220945312585436978572208778500912252165463043129681618151197016257478', '699138751524213124094312216825551629561424593205010237977696200916445964684', '2764775971936660990736598311991954171447451800401631395639071339987763587614', '10934377152170553993439479038404269881062854488806451985760537780703486068308', '43247909631719355347185999181748231619129200590055369794426007640095877732860', '171069509209912116706646841207804116182333282333996796075729541331934805254424', '676730852609799402854235298307342753721289013938899090358400685563095038432942', '2677285562879644352897777603522480091364515660984549685943453807118230006063172', '10592738531393375483204250518284595144094388049982348757428447671641692632684724', '41913713613427025293254228669471419634905851996333034651695296542467129122133800', '165858552441704085803306019163479760555270300042632151407422816318048496669015180', '656376399024616169349253607753345435388942038466586811952779656067170646392272840', '2597771382055171036438595264488592497806939617029730903644099765561619037129981240', '10282088127575012633735978459444359117193900861809983856381541729425708916192792880', '40699932171651091675204914735300588172225857577997852764843602678976764459929805150', '161115593562260183597018076262500259385225118963936327496691227156776984827584194180', '637841185472509493966277041641953081675754238090104091048544721209706145413312768740', '2525330407789119221009341756704875466226455554887350891090156651320061065513932186440', '9998943371381242321023474793439574481139884832189105555262377011307809353994353116580', '39593131470570019928884900188787576804513637926117934749025519709205419589642069387800', '156788800623457278918384204747598804145874006187427021606141058048453461574982594775688', '620925183926009621146978506218967449531342090729015621989883130549504437230725772687824'); var n:longint; begin readln(n); while n<>-1 do begin writeln(a[n]); readln(n); end; end.
Code mẫu của RR
//Written by Nguyen Thanh Trung {$R+,Q+} {$Mode objFPC} uses math; const FINP=''; FOUT=''; MAXN=101; type big=array[0..MAXN] of longint; var f1,f2:text; f:array[0..150] of big; procedure openF; begin assign(f1,FINP); reset(f1); assign(f2,FOUT); rewrite(f2); end; procedure closeF; begin close(f1); close(f2); end; operator + (a,b:big) c:big; var i,nho:longint; begin fillchar(c,sizeof(c),0); c[0]:=max(a[0],b[0]); nho:=0; for i:=1 to c[0] do begin c[i]:=a[i]+b[i]+nho; if c[i]<10 then nho:=0 else begin c[i]-=10; nho:=1; end; end; if nho>0 then begin inc(c[0]); c[c[0]]:=1; end; end; operator * (a,b:big) c:big; var i,j,nho:longint; begin fillchar(c,sizeof(c),0); c[0]:=a[0]+b[0]+1; for i:=1 to a[0] do for j:=1 to b[0] do c[i+j-1]+=a[i]*b[j]; nho:=0; for i:=1 to c[0] do begin c[i]+=nho; if c[i]<10 then nho:=0 else begin nho:=c[i] div 10; c[i]:=c[i] mod 10; end; end; if nho>0 then begin inc(c[0]); c[c[0]]:=nho; end; while (c[0]>0) and (c[c[0]]=0) do dec(c[0]); end; procedure init; var i,j:longint; begin f[0][0]:=1; f[0][1]:=1; for i:=1 to 150 do for j:=i-1 downto 0 do f[i]+=f[j]*f[i-j-1]; end; procedure solve; var n,i:longint; begin read(f1,n); while n>=0 do begin for i:=f[n,0] downto 1 do write(f2,f[n,i]); writeln(f2); read(f1,n); end; end; begin init; openF; solve; closeF; end.
Code mẫu của hieult
#include <cstdio> #include <iostream> //#include <conio.h> #define base 1000000000 using namespace std; struct solon { int so; long long a[40]; }; solon tong (solon A,solon B) { int du = 0; solon C; if(A.so<B.so) { C = A; A = B; B = C; } for(int i = B.so+1;i<=A.so;i++) B.a[i] = 0; C.so = A.so; for(int i = 1;i<=A.so;i++) { C.a[i] = (A.a[i]+B.a[i]+du)%base; du = (A.a[i]+B.a[i]+du)/base; } if(du>0) {C.so++; C.a[C.so] = du;} return C; } solon tichnho(solon A,long long k,int chuso) { solon C; long long du = 0; C.so = A.so+chuso; for(int i = 1;i<=chuso;i++) C.a[i] = 0; for(int i = chuso+1;i<=chuso+A.so;i++) { C.a[i] = (A.a[i-chuso]*k+du)%base; du = (A.a[i-chuso]*k+du)/base; } if(du>0) {C.so++; C.a[C.so] = du;} return C; } solon tich2(solon A){ solon C; int du = 0; C.so = A.so; for(int i = 1;i<=A.so;i++){ C.a[i] = (A.a[i]*2+du); if(C.a[i]>=base){ C.a[i]-=base; du = 1; } else du = 0; } if(du>0) {C.so++; C.a[C.so] = du;} return C; } solon tich(solon A,solon B) { solon C; C.so = 1; C.a[1] = 0; for(int i = 1;i<=B.so;i++) { C = tong(C,tichnho(A,B.a[i],i-1)); } return C; } void print(solon A) { printf("%lld",A.a[A.so]); for(int i = A.so-1;i>=1;i--) printf("%09lld",A.a[i]); } solon hieu(solon A,solon B){ solon C; C.so = A.so; for(int i = B.so+1;i<=A.so;i++) B.a[i] = 0; int du = 0; for(int i = 1;i<=A.so;i++){ C.a[i] = A.a[i]-B.a[i]-du; if(C.a[i]<0){ C.a[i]+=base; du = 1; } else du = 0; } while(C.a[C.so]==0) C.so--; if(C.so==0) C.so = 1; return C; } solon F[151]; int n; int main() { F[0].so = 1; F[0].a[1] = 1; F[1].so = 1; F[1].a[1] = 1; for(int i = 2;i<=150;i++){ F[i].so = 1; F[i].a[1] = 0; for(int j = 0;j<i;j++){ F[i] = tong(F[i],tich(F[j],F[i-j-1])); } } while(scanf("%d",&n)>0 && n>0){ print(F[n]); printf("\n"); } }
Code mẫu của ll931110
Program MCIRGAME; Const maxn = 150; maxv = 10000000; Var F: array[0..maxn,1..150] of qword; k: array[1..100] of qword; n: integer; Procedure optimize; Var i,j,s,p,q,tmp: integer; Begin Fillchar(F, sizeof(F), 0); F[0,1]:= 1; F[1,1]:= 1; For i:= 2 to maxn do For j:= 0 to i - 1 do Begin Fillchar(k, sizeof(k), 0); For p:= 1 to 50 do For q:= 1 to 50 do Begin tmp:= p + q - 1; k[tmp]:= k[tmp] + F[j,p] * F[i - 1 - j,q]; If k[tmp] > maxv then Begin k[tmp + 1]:= k[tmp + 1] + k[tmp] div maxv; k[tmp]:= k[tmp] mod maxv; End; End; For s:= 1 to 100 do Begin F[i,s]:= F[i,s] + k[s]; If F[i,s] >= maxv then Begin F[i,s + 1]:= F[i,s + 1] + F[i,s] div maxv; F[i,s]:= F[i,s] mod maxv; End; End; End; End; Procedure solve; Var st: string; i,j,t: integer; Begin Repeat Readln(n); If n <> -1 then Begin t:= 100; While F[n,t] = 0 do dec(t); Write(F[n,t]); For i:= t - 1 downto 1 do Begin str(F[n,i], st); For j:= 1 to 7 - length(st) do write(0); Write(st); End; Writeln; End; Until n = -1; End; Begin optimize; solve; End.
Bình luận