Asuntos Oficiales > Retos

 Ultimo

(1/1)

Binary:
Bueno, ya que ninguno de los anteriores fue resuelto... demosle la bienvenida al ultimo que posteo, por lo menos sera facil:

Descripcion:
Encontrar una subsequencia de numeros de largo N (2 <= N <= 100 000 000) de la sequencia dada, de modo que la suma de todos los numeros de la subsequencia sea divisible por K (2 <= K <= 10 000 000).

Entrada:
En la primera linea: dos enteros: N y K
En la segunda: N enteros

Salida:
En la primera linea, 2 enteros: i, j (denotando que la sequencia encerrada entre Si... Sj, es la secuencia deseada).... para un i <= j.

Ejemplo:

Entrada:
7 10
2 4 3 5 2 7 2

Salida:
3 5

Explicacion:
S(3) --> 3
S(4) --> 5
S(5) --> 2
3 + 5 + 2 = 10
10 % 10 = 0.

Saludos....
P.D. Por favor, nada de N^2 o N^3 porque N es bastante grande.

JuanK:
si ninguno de los ancerrar el post publicando tu solucion, tal como esta en los demas retos, por ejemplo del del protocolo hdlc, una evz hecho eso yo mismo cerrare el post.

Binary:
se supone que hay una o mas personas tratando de solucionar los anteriores.... espero que lo hagan... en una semana posteo soluciones...

Binary:

--- Código: Text --- // Divisibility#include &#60;stdio.h&#62;#define MAXR 10000001 int r[MAXR]; int main(){  int n, k, i, num, mod, found;  __int64 sum = 0;  FILE *fin, *fout;   fin = fopen(&#34;div.in&#34;, &#34;r&#34;);  fout = fopen(&#34;div.out&#34;, &#34;w&#34;);    found = 0;  fscanf(fin, &#34;%d %d&#34;, &n, &k);  for(i = 0; i &#60; n; i++) {    fscanf(fin, &#34;%d&#34;, &num);    sum += num;    mod = (int)(sum % k);    if(r[mod] != 0) {      fprintf(fout, &#34;%d %d&#092;n&#34;, r[mod]+2, i+1);      found = 1;      break;    }    r[mod] = i;  }    if(!found)    fprintf(fout, &#34;NO SOLUTION&#092;n&#34;);   fclose(fin);  fclose(fout);  return 0;}  

Navegación

[0] Índice de Mensajes

Ir a la versión completa