fork download
  1. indent n = concat $ replicate n " "
  2.  
  3. gen level n max
  4. | level == max = indent level ++ "a := '" ++ (show $ product [1..n]) ++ "'\n"
  5. | otherwise = indent level ++ "if n <= " ++ show (n+2^(max-level-1)) ++ " then\n" ++
  6. gen (level+1) n max ++
  7. indent level ++ "else\n" ++
  8. gen (level+1) (n+2^(max-level-1)) max
  9.  
  10. main = putStrLn $ gen 0 0 6
Success #stdin #stdout 0s 5684KB
stdin
Standard input is empty
stdout
if n <= 32 then
  if n <= 16 then
    if n <= 8 then
      if n <= 4 then
        if n <= 2 then
          if n <= 1 then
            a := '1'
          else
            a := '1'
        else
          if n <= 3 then
            a := '2'
          else
            a := '6'
      else
        if n <= 6 then
          if n <= 5 then
            a := '24'
          else
            a := '120'
        else
          if n <= 7 then
            a := '720'
          else
            a := '5040'
    else
      if n <= 12 then
        if n <= 10 then
          if n <= 9 then
            a := '40320'
          else
            a := '362880'
        else
          if n <= 11 then
            a := '3628800'
          else
            a := '39916800'
      else
        if n <= 14 then
          if n <= 13 then
            a := '479001600'
          else
            a := '6227020800'
        else
          if n <= 15 then
            a := '87178291200'
          else
            a := '1307674368000'
  else
    if n <= 24 then
      if n <= 20 then
        if n <= 18 then
          if n <= 17 then
            a := '20922789888000'
          else
            a := '355687428096000'
        else
          if n <= 19 then
            a := '6402373705728000'
          else
            a := '121645100408832000'
      else
        if n <= 22 then
          if n <= 21 then
            a := '2432902008176640000'
          else
            a := '51090942171709440000'
        else
          if n <= 23 then
            a := '1124000727777607680000'
          else
            a := '25852016738884976640000'
    else
      if n <= 28 then
        if n <= 26 then
          if n <= 25 then
            a := '620448401733239439360000'
          else
            a := '15511210043330985984000000'
        else
          if n <= 27 then
            a := '403291461126605635584000000'
          else
            a := '10888869450418352160768000000'
      else
        if n <= 30 then
          if n <= 29 then
            a := '304888344611713860501504000000'
          else
            a := '8841761993739701954543616000000'
        else
          if n <= 31 then
            a := '265252859812191058636308480000000'
          else
            a := '8222838654177922817725562880000000'
else
  if n <= 48 then
    if n <= 40 then
      if n <= 36 then
        if n <= 34 then
          if n <= 33 then
            a := '263130836933693530167218012160000000'
          else
            a := '8683317618811886495518194401280000000'
        else
          if n <= 35 then
            a := '295232799039604140847618609643520000000'
          else
            a := '10333147966386144929666651337523200000000'
      else
        if n <= 38 then
          if n <= 37 then
            a := '371993326789901217467999448150835200000000'
          else
            a := '13763753091226345046315979581580902400000000'
        else
          if n <= 39 then
            a := '523022617466601111760007224100074291200000000'
          else
            a := '20397882081197443358640281739902897356800000000'
    else
      if n <= 44 then
        if n <= 42 then
          if n <= 41 then
            a := '815915283247897734345611269596115894272000000000'
          else
            a := '33452526613163807108170062053440751665152000000000'
        else
          if n <= 43 then
            a := '1405006117752879898543142606244511569936384000000000'
          else
            a := '60415263063373835637355132068513997507264512000000000'
      else
        if n <= 46 then
          if n <= 45 then
            a := '2658271574788448768043625811014615890319638528000000000'
          else
            a := '119622220865480194561963161495657715064383733760000000000'
        else
          if n <= 47 then
            a := '5502622159812088949850305428800254892961651752960000000000'
          else
            a := '258623241511168180642964355153611979969197632389120000000000'
  else
    if n <= 56 then
      if n <= 52 then
        if n <= 50 then
          if n <= 49 then
            a := '12413915592536072670862289047373375038521486354677760000000000'
          else
            a := '608281864034267560872252163321295376887552831379210240000000000'
        else
          if n <= 51 then
            a := '30414093201713378043612608166064768844377641568960512000000000000'
          else
            a := '1551118753287382280224243016469303211063259720016986112000000000000'
      else
        if n <= 54 then
          if n <= 53 then
            a := '80658175170943878571660636856403766975289505440883277824000000000000'
          else
            a := '4274883284060025564298013753389399649690343788366813724672000000000000'
        else
          if n <= 55 then
            a := '230843697339241380472092742683027581083278564571807941132288000000000000'
          else
            a := '12696403353658275925965100847566516959580321051449436762275840000000000000'
    else
      if n <= 60 then
        if n <= 58 then
          if n <= 57 then
            a := '710998587804863451854045647463724949736497978881168458687447040000000000000'
          else
            a := '40526919504877216755680601905432322134980384796226602145184481280000000000000'
        else
          if n <= 59 then
            a := '2350561331282878571829474910515074683828862318181142924420699914240000000000000'
          else
            a := '138683118545689835737939019720389406345902876772687432540821294940160000000000000'
      else
        if n <= 62 then
          if n <= 61 then
            a := '8320987112741390144276341183223364380754172606361245952449277696409600000000000000'
          else
            a := '507580213877224798800856812176625227226004528988036003099405939480985600000000000000'
        else
          if n <= 63 then
            a := '31469973260387937525653122354950764088012280797258232192163168247821107200000000000000'
          else
            a := '1982608315404440064116146708361898137544773690227268628106279599612729753600000000000000'