Cerința
Se dau două numere naturale N şi K. Determinaţi numărul de şiruri de lungime N formate doar din semnele + şi – şi în care nu apar K semne – pe poziţii consecutive.
Date de intrare
Fișierul de intrare minusk.in conţine pe prima linie 2 numere naturale separate printr-un spaţiu, N şi K, cu semnificaţia din enunţ.
Date de ieșire
Fișierul de ieșire minusk.out va conține pe prima linie un singur număr natural reprezentând valoarea cerută, modulo 2011.
Restricții și precizări
1 ≤ K ≤ N ≤ 1000000;- pentru
30%dintre testeN ≤ 10 - pentru
70%dintre testeN ≤ 1000
Exemplu
minusk.in
4 2
minusk.out
8
Explicație
Cele 8 şiruri sunt: ++++, +++-, ++-+, +-++, -+++, +-+-, -++-, -+-+. În niciunul dintre aceste şiruri nu avem două sau mai mult de două caractere – pe poziţii consecutive.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema MinusK:
#include <stdio.h>
#define DIM 1000002
#define MOD 2011
int P[DIM];
int M[DIM];
int N, K, T, i, aux;
int main() {
FILE *f = fopen("minusk.in","r");
fscanf(f,"%d %d",&N, &K);
fclose(f);
P[0] = 1;
P[1] = 1;
M[1] = 1;
for (i=2;i<=N;i++) {
P[i] = (P[i-1] + M[i-1]) % MOD;
if (i>=K)
aux = P[i-K];
else
aux = 0;
M[i] = (P[i-1] + M[i-1]) % MOD;
M[i] -= aux;
if (M[i]<0)
M[i]+=MOD;
}
FILE *g = fopen("minusk.out","w");
fprintf(g,"%d",(P[N] + M[N])%MOD);
fclose(g);
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa
.
Rezolvarea problemei #730 MinusK
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #730 MinusK de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!