Cod sursa(job #784657)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 6 septembrie 2012 16:11:45
Problema Cifre Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#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;
	
}