Pagini recente » Cod sursa (job #867190) | Cod sursa (job #3239825) | Cod sursa (job #655741) | Cod sursa (job #2781583) | Cod sursa (job #1108177)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("cifre.in");
ofstream g("cifre.out");
long long A;
long long B;
long long C;
long long K;
long long p, nCF;
int numarCifre( int X ) {
int i = 0;
while ( X > 0 ) {
if ( X % 10 == C ) {
i ++;
}
X /= 10;
}
return i;
}
void CazuriFavorabile() {
if ( B - A >= 10000 ) {
while ( A % 10000 ) {
if ( numarCifre( A ) >= K ) {
nCF ++;
}
A ++;
}
for ( ; B - A >= 10000; A += 10000 ) {
int X = numarCifre( A / 10000 );
if ( X >= K ) {
nCF += 6561;
}
if ( X >= K - 1 ) {
nCF += 2916;
}
if ( X >= K - 2 ) {
nCF += 487;
}
if ( X >= K - 3 ) {
nCF += 35;
}
if ( X >= K - 4 ) {
nCF ++;
}
}
}
for ( ; A <= B; A ++ ) {
if ( numarCifre(A) >= K ) {
nCF ++;
}
}
}
void CazuriPosibile() {
p = B - A + 1;
}
int main() {
f >> A;
f >> B;
f >> C;
f >> K;
CazuriPosibile();
CazuriFavorabile();
g << (double) nCF/p;
return 0;
}