Cod sursa(job #654915)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 31 decembrie 2011 12:17:42
Problema Cifre Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
/*
#include<iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
	int sol,A,B,C,K,cnt,x,Timp;

	freopen("cifre.in","r",stdin);

	scanf("%d%d%d%d",&A,&B,&C,&K);

	Timp=1005000;

	srand(time(NULL));

	sol=0;
	while(Timp)
	{
		x=A+rand()%(B-A+1);
		//cout<<x<<"\n";
		cnt=0;
		while(x)
		{
			if(x%10==C) cnt++;
			x/=10;
		}

		if(cnt>=K) sol++;

		Timp--;
	}

	freopen("cifre.out","w",stdout);

	printf("%.4f",(double)sol/1005000);

	return 0;
}
*/
#include<iostream>
#include<fstream>
#include<algorithm>
#include<math.h>
#include <time.h>
#include<iomanip>
using namespace std;
int apar,sol;
int functie(const void *a, const void *b)
{
	return *(int*)a - *(int*)b;
}
int main(void)
{
	int a,b,c,k,q,x,i;
	fstream f,g;
	f.open("cifre.in",ios::in);
	g.open("cifre.out",ios::out);
	f>>a>>b>>c>>k;
	if (b<=50000)
	{
		for (i=a;i<=b;i++)
		{
			x=i;
			apar=0;
			while (x)
			{
				q=x%10;
				if (q==c)
					apar++;
				x=x/10;
			}
			if (apar>=k)
				sol++;
		}
		g<<fixed<<setprecision(4)<<float(float (sol)/(double)(b-a+1));
	}
	else
	{
		int A=a,B=b,C=c,K=k;
		int cnt=0,Timp=1005000;

	srand(time(NULL));

	sol=0;
	while(Timp)
	{
		x=A+rand()%(B-A+1);
		//cout<<x<<"\n";
		cnt=0;
		while(x)
		{
			if(x%10==C) cnt++;
			x/=10;
		}

		if(cnt>=K) sol++;

		Timp--;
	}
	g<<fixed<<setprecision(4)<<(double)sol/1005000;
}

}