Buna brainly! Am o problema la info (clasa a 9a, nu am facut vectorii la info) si trebuie sa o scriu in c++
se citete un nr n de la tastatura. sa se calculeze numarul de cifre obtinute prin alaturrea numerelor de la 1 la n.
exemplu n=11
1234567891011
se afiseaza 13
Eu am scris-o corect, a trecut de programul de verificari.
imi apare si tabelul negru dar daca introduc valoarea n nu se intampla nimic. sora-mea spune ca nu compileaza.
as vrea sa rezolvati si voi problema si sa incerc si variantele voastre, am impresia ca a mea e cam complicata
multumesc!
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
int n, c=1, z=1, nrcif=0;
int main()
{
cout << "n= "; cin >> n;
while (z<n)
{
if (z*10>n) nrcif=nrcif+(n-z+1)*c;
else
{
if (z*10==n) nrcif=nrcif+(n-z)*c+c+1;
else nrcif=nrcif+9*z*c;
}
z=z*10; c=c+1;
}
cout << nrcif;
}
Explicație:
prin z notez zecii, adică z pornesc de la 1 şi măresc repetat de 10 ori pentru a trece la alt ordin: unităţi, zeci sute, ...
era bine să observi că lucrează această formulă 9*z*c:
de la 1 la 9 pt z=1, c=1 avem 9*1*1=9 cifre există:
de la 10 la 99 şi z=10, c=2 avem 9*10*2=180 cifre există
de la 100 la 999 şi z=100, c=3 avem 9*100*3=2700 cifre există şamd
Analizeată codul şi sper să ânţelegi ce logică am pus... Succese!