Un program de 100 pcte pe pbinfo va rog! (#1353)
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 2 ori), 12, 13, 14, 15.
Răspunsuri la întrebare
Răspuns de
18
#include <fstream>
using namespace std;
ifstream f("aparitiicifra.in");
ofstream g("aparitiicifra.out");
int k,c,p,sol,n;
int main()
{ f>>k>>c;
p=1;
n=k;
while(k)
{
if(k%10>c) sol=sol+(k/10+1)*p;
if(k%10<c) sol=sol+(k/10)*p;
if(k%10==c) sol=sol+(k/10)*p+n%p+1;
k/=10;
p*=10;
}
g<<sol;
return 0;
}
using namespace std;
ifstream f("aparitiicifra.in");
ofstream g("aparitiicifra.out");
int k,c,p,sol,n;
int main()
{ f>>k>>c;
p=1;
n=k;
while(k)
{
if(k%10>c) sol=sol+(k/10+1)*p;
if(k%10<c) sol=sol+(k/10)*p;
if(k%10==c) sol=sol+(k/10)*p+n%p+1;
k/=10;
p*=10;
}
g<<sol;
return 0;
}
stassahul:
Mersi!
Alte întrebări interesante
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Limba rusă,
9 ani în urmă