Fişierul intrare/ieşire: | aparitii2.in, aparitii2.out | Sursă | Cerc informatică Vianu |
Autor | Cristian Francu | Adăugată de | |
Timp execuţie pe test | 0.5 sec | Limită de memorie | 1536 kbytes |
Scorul tău | N/A | Dificultate |
Vezi solutiile trimise | Statistici
Apariții 2 (clasa a 7-a)
Notă: aceasta este o problemă didactică, pentru învăţarea recursivităţii în limbajul C. Drept pentru care soluţia trebuie să fie un program C (extensie .c), nu are voie să folosească bucle (fără instrucţiuni while, for sau echivalente) şi nu are voie să folosească instrucţiuni cu şiruri (să includă string.h sau să folosească fgets()).
Se dă un cuvînt format numai din litere mici ale alfabetului latin (a, b, ... z). Se dă şi un text format din aceleaşi caractere. Să se spună de cîte ori apare cuvîntul în text. Sînt permise suprapuneri.
Cerinţă
Scrieţi un program în limbajul C, care nu conţine instrucţiuni de ciclare şi care afişează de cîte ori apare un cuvînt într-un text.
Date de intrare
Fişierul de intrare aparitii2.in conţine pe prima linie cuvîntul şi pe a doua linie textul. Ambele linii se termină cu caracterul sfîrşit de linie (\n).
Date de ieşire
În fişierul de ieşire aparitii2.out se va scrie un singur număr, de cîte ori apare cuvîntul în text.
Restricţii
- 1 ≤ lungime cuvînt ≤ 100
- 1 ≤ lungime text ≤ 1000000
- atît cuvîntul cît şi textul conţin numai litere mici
- apariţiile cuvîntului se pot suprapune în text
- sursa trimisă trebuie să fie C (extensie .c)
- sursa trimisă nu are voie să conţină instrucţiuni de ciclare (*while*, for, etc)
- sursa trimisă nu are voie să includă headerul string.h
- sursa trimisă nu are voie să folosească funcţii de bibliotecă care lucrează cu şiruri, gen fgets()
Exemple
aparitii2.in | aparitii2.out |
---|---|
aba abababcaba | 3 |
aaab aaaaaaaaaaaaaaaaaaaaaaaaa | 0 |