Cerința
Determinaţi numărul de apariţii a unei cifre c
în reprezentarea tuturor numerelor mai mici sau egale cu un n
dat.
Date de intrare
Pe prima linie a fişierului aparitiicifra.in
se află numerele n
şi c
separate prin spaţii.
Date de ieșire
Pe prima linie a fişierului aparitiicifra.out
se scrie numărul de apariţii a cifrei c
în reprezentarea tuturor numerelor mai mici sau egale cu n
.
Restricții și precizări
0 < n < 2.000.000.000
0 < c < 10
Exemplu
aparitiicifra.in
15 1
aparitiicifra.out
8
Explicație
Cifra 1
a apărut în numerele 1
, 10
, 11
(de două ori), 12
, 13
, 14
, 15
.
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 AparitiiCifra:
program numere;
var c,n:longint;
f:text;
function performant(c,k:longint):longint;
var i,j,n,z:longint;
begin
n:=0;{nr de aparitii a cifrei c}
j:=1;{pornim de la ultima cifra(j=10-penultima cifra,j=100-antepenultima...)}
z:=0;{in z memoram ultimele cifre ale numarului k, care au fost extrase}
while k>=c do
begin
if k mod 10>c then n:=n+(k div 10+1)*j
else if k mod 10=c then n:=n+(k div 10)*j+z+1
else n:=n+(k div 10)*j;
z:=z+(k mod 10)*j;
k:=k div 10;
j:=j*10;
end;
performant:=n;
end;
Begin
assign(f,'aparitiicifra.in');reset(f);
readln(f,n,c);
close(f);
assign(f,'aparitiicifra.out');rewrite(f);
writeln(f,performant(c,n));
close(f);
End.
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 #1353 AparitiiCifra
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1353 AparitiiCifra 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!