Rezolvare completă PbInfo #1711 siruri_concatenate

Cerința

Scrieţi un program care citeşte din fişierul de intrare mai multe şiruri de caractere formate din litere mici ale alfabetului englez şi determină câte dintre acestea sunt formate din două şiruri identice (cu lungimea cel puţin 1) concatenate.

Date de intrare

Fișierul de intrare siruri_concatenate.in conține pe prima linie un număr natural nenul n, iar pe următoarele n linii câte un şir format din litere mici ale alfabetului englez.

Date de ieșire

Fișierul de ieșire siruri_concatenate.out va conține pe prima linie numărul de şiruri din fişierul de intrare care sunt formate din două şiruri identice concatenate.

Restricții și precizări

  • 1 ≤ n ≤ 1000000
  • şirurile au cel mult 5000 de caractere.

Exemplu:

siruri_concatenate.in

5
sirsir
micropico
pp
vara
nanonano

siruri_concatenate.out

3

Explicație

Cele 3 şiruri din fişier obţinute prin concatenarea a două şiruri identice sunt: sirsir (sir), pp (p) şi nanonano (nano).

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 siruri_concatenate:

#include <fstream>
#include <cstring>
#include <iostream>

std::ifstream fin("siruri_concatenate.in");
std::ofstream fout("siruri_concatenate.out");

char cuvant[5000];

bool concatenat() {
    int lungime = strlen(cuvant);

    if(lungime % 2)
        return 0;

    for(int i = 0; i < lungime / 2; i++)
        if(cuvant[i] != cuvant[i + lungime / 2])
            return 0;
    return 1;
}

int main() {
    int nr_siruri, concatenate = 0;

    fin >> nr_siruri;

    for(int i = 1; i <= nr_siruri; i++)
    {
        fin >> cuvant;

        concatenate += concatenat();
    }

    fout << concatenate;
    return 0;
}

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 Adresa de email.

Rezolvarea problemei #1711 siruri_concatenate

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1711 siruri_concatenate 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!