Informatică, întrebare adresată de laurachirila5, 9 ani în urmă

Va rog frumos sa ma ajutati cu urmatoarea problema de informatica, imi trebuie rezolvarea in c++:

Avem la dispoziţie două şiruri de numere. Primul şir se dă element cu element iar al doilea se construieşte după o regulă precizată. Determinaţi câte elemente ale primului şir se găsesc în al doilea.

Date de intrare

Pe prima linie a fişierului crescator1.in se găseşte un număr N. Pe a doua linie se găsesc cele N elemente ale primului şir, separate prin câte un spaţiu şi în ordine crescătoare. Primul element de pe linia a 2 – a este totodată primul element al celui de-al doilea şir. Celelalte elemente ai acestui şir se construiesc unul din altul. Astfel, dacă t este elementul curent, următorul este t + suma cifrelor lui t.

Date de ieşire

Pe prima linie a fişierului crescator1.out se află un număr ce reprezintă valoarea cerută.

Restricţii

1 ≤ N ≤ 100000 Elementele şirului dat sunt naturale nenule mai mici decât 2000000000 Se garantează că diferenţa dinte ultimul şi primul termen din şirul dat este maxim 300000

VA ROG !!! DAU COROANA!!! URGENT!!!

Răspunsuri la întrebare

Răspuns de ap53
0
#include <fstream>
using namespace std;

ifstream fin("crescator1.in");
ofstream fout("crescator1.out");

int main()
{
    int a[100000], n, x, cnt = 0, y = 0;

    fin>>n;
    for(int i = 0; i < n; ++i)
        fin>>a[i];

    fin>>x;
    while(x > 9)
    {
        for(int i = 0; i < n; ++i)
            if(a[i] == x) cnt++;

        int s = 0;
        while(x)
            {
                s += x % 10;
                x /= 10;
            }
        x = s;
    }
    for(int i = 0; i < n; ++i)
        if(a[i] == x) cnt++;

    fout<<cnt;
}
Alte întrebări interesante