Pagini recente » Borderou de evaluare (job #2195280) | Cod sursa (job #1464188) | Cod sursa (job #1478871) | Cod sursa (job #1938958) | Cod sursa (job #784657)
Cod sursa(job #784657)
#include <fstream>
#include <iomanip>
#define abs(x) ((x)<0?0:(x))
using namespace std;
int A,B,C,K,Sol,Sol2;
short V[]={10000,3439,523,37,1};
int Count(int N) {
int Rez=0;
while(N) {
Rez+=((N%10)==C?1:0);
N/=10;
}
return Rez;
}
int Solve(int N) {
int i,n,Tmp,Sum;
n=N/10000;
for(i=1,Sum=0;i<=n;i++) {
Tmp=Count(i-1);
if(abs(K-Tmp)<5)
Sum+=V[abs(K-Tmp)];
}
for(i=10000*n;i<=N;i++)
if(Count(i)>=K)
Sum++;
return Sum;
}
void Citire() {
ifstream in("cifre.in");
in>>A>>B>>C>>K;
in.close();
}
void Afis() {
ofstream out("cifre.out");
out<<fixed<<setprecision(4)<<1.0*Sol/(B-A+1)<<'\n';
out.close();
}
int main() {
Citire();
Sol=Solve(B)-Solve(A-1);
Afis();
return 0;
}