Ver Mensaje Individual
  #7
Antiguo 2 de junio de 2020, 10:57
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 02.10.2026 10:24
Posts Posts: 404
Likes enviados Enviados: 130
Likes recibidos Recibidos: 180

Citación del post de Josber Ver Mensaje
❞
Serían combinaciones, (30!), no permutaciones, ¿no?, perdón si estoy equivocado, hace tantos años de las matemáticas ... a ver si alguiien más puesto que yo, nos lo aclara

Em anexo projecto em Powercobol para calculo de um factorial e uma solução para o problema:
Código COBOL:
  1. * IDENTIFICATION DIVISION.
  2. * PROGRAM-ID. ACCSUM.
  3.  ENVIRONMENT     DIVISION.
  4.  DATA            DIVISION.
  5.  WORKING-STORAGE SECTION.
  6.  01  ACCOUNTS.
  7.      05  ACC-X       PIC S9(4)v99 COMP-3
  8.                     OCCURS 12 TIMES.
  9.  01  B               PIC 9(06) comp.
  10.  01  bx              PIC 9(06) comp.
  11.  01  pos             pic 9(06) comp.
  12.  01  sum1            pic s9(8)v99 comp-3.
  13.  01  sum2            pic s9(8)v99 comp-3.
  14.  01  r               pic 9(06) comp.
  15.  01  res             pic 9(06) comp.
  16.  01  comb            pic x(15) value space.
  17.  PROCEDURE       DIVISION.
  18.  0000-MAIN SECTION.
  19.      PERFORM 0100-init
  20.      perform 0200-process
  21.      EXIT PROGRAM.
  22.      
  23.  0100-init section.
  24.      move  134  to ACC-X(1)
  25.      move  400  to ACC-X(2)
  26.      move  322  to ACC-X(3)
  27.      move  100  to ACC-X(4)
  28.      move  300  to ACC-X(5)
  29.      move  86   to ACC-X(6)
  30.      move  600  to ACC-X(7)
  31.      move  700  to ACC-X(8)
  32.      move  800  To ACC-X(9)
  33.      move  200  to ACC-X(10)
  34.      move  123  to ACC-X(11)
  35.      move  203  to ACC-X(12).
  36. *>   exit.      *> GnuCobol
  37.  0200-process section.
  38.  
  39.      perform varying b from 0 by 1
  40.        until b > 4095   *> 2^12  --> se for 30 numeros tem k ser 2^30 = 1.073.741.824
  41.         compute bx = b
  42.         compute pos = 0
  43.         move zero to sum1 sum2
  44.         perform until bx = zero
  45.              divide bx by 2 giving res remainder r
  46.  
  47.             if ( r NOT = zero )
  48.               compute sum1 = sum1 + acc-x ( pos + 1 )
  49.               move '1' to comb(pos + 1 : 1)
  50.             else
  51.               compute sum2 = sum2 + acc-x ( pos + 1 )
  52.               move '0' to comb(pos + 1 : 1)
  53.             end-if
  54.  
  55.             compute bx = bx / 2
  56.             add 1 to pos
  57.  
  58.         end-perform
  59.  
  60.         if (sum1 = 986 ) then
  61.           display "-->Combinação: " comb " -->Soma=" sum2
  62.         end-if
  63.      end-perform.
  64. *>   exit.      *> GnuCobol
Archivos Adjuntos
Tipo de Archivo: zip Untitled.zip (5,0 KB)Descargas: 147
Joseg is offline   Responder Con Cita