记录编号 49111 评测结果 AAAAA
题目名称 三只小猪 最终得分 100
用户昵称 Gravatar极寒之魇 是否通过 通过
代码语言 Pascal 运行时间 0.344 s
提交时间 2012-11-07 12:55:09 内存使用 10.23 MiB
显示代码纯文本
  1. uses math;
  2. type ar=array[0..1000] of longint;
  3.  
  4. var f:array[0..50,0..50] of ar;
  5. bw:ar;
  6. i,j,n,t,k,x,y:longint;
  7.  
  8. function add(x,y:ar):ar;
  9. var a,b,c:ar;
  10. t,n,i,m:longint;
  11. begin
  12. fillchar(c,sizeof(c),0);
  13. fillchar(b,sizeof(b),0);
  14. fillchar(a,sizeof(a),0);
  15. a:=x; b:=y; n:=max(a[0],b[0]);
  16. t:=0; m:=0;
  17. for i:=1 to n do
  18. begin
  19. m:=a[i]+b[i]+t;
  20. c[i]:=m mod 10;
  21. t:=m div 10;
  22. end;
  23. if t<>0 then begin c[0]:=n+1; c[n+1]:=t; end else c[0]:=n;
  24. exit(c);
  25. end;
  26.  
  27. function cheng(x:longint;y:ar):ar;
  28. var b,c:ar;
  29. t,n,i,m,a:longint;
  30. begin
  31. fillchar(c,sizeof(c),0);
  32. fillchar(b,sizeof(b),0);
  33. a:=x; b:=y; n:=b[0]; t:=0; m:=0;
  34. for i:=1 to n do
  35. begin
  36. m:=a*b[i]+t;
  37. c[i]:=m mod 10;
  38. t:=m div 10;
  39. end;
  40. if t<>0 then begin c[0]:=n+1; c[n+1]:=t; end else c[0]:=n;
  41. exit(c);
  42. end;
  43.  
  44.  
  45. begin
  46. assign(input,'piggy.in'); reset(input);
  47. assign(output,'piggy.out'); rewrite(output);
  48. readln(t);
  49. for k:=1 to t do
  50. begin
  51. fillchar(f,sizeof(f),0);
  52. for i:=1 to 50 do begin f[i,1][1]:=1; f[i,1][0]:=1; f[i,i][1]:=1; f[i,i][0]:=1;
  53. end;
  54. readln(x,y);
  55. if x<y then begin writeln(0); continue; end;
  56. if f[x,y][0]<>0 then begin writeln(f[x,y][0]); continue; end;
  57. for i:=1 to x do
  58. for j:=1 to y do
  59. if ((i>j) and (f[i,j][0]=0)) then begin bw:=cheng(j,f[i-1,j]); f[i,j]:=add(bw,f[i-1,j-1]); end;
  60. for i:=f[x,y][0] downto 1 do
  61. write(f[x,y][i]);
  62. writeln;
  63. end;
  64. close(output);
  65. end.
  66.  
  67.