Cod sursa(job #20715)

Utilizator piroslPiros Lucian pirosl Data 21 februarie 2007 22:37:37
Problema Cifre Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#include <set>
using namespace std;

set<int> s;

bool contains(int i, int c, int k)
{
	int count = 0;
	while(i>0)
	{
		if(i%10 == c)
			++count;
		if(count == k) 
			return true;
		i/=10;
		set<int>::iterator iter = s.find(i);
		if(iter != s.end())
			return true;
	}
	return false;
}

int main(void)
{
	ifstream in;
	ofstream out;
	in.open("cifre.in", ios::in);
	out.open("cifre.out", ios::out);
	int a,b,c,k;
	in >> a >> b >> c >> k;
	int count = 0;
	int lastinserted = 0;
	for(int i=a;i<=b;++i)
	{
		if(contains(i, c, k)) 
		{
			++count;
			if(lastinserted == 0)
			{
				s.insert(i);
				lastinserted = i;
			}
			if(i-lastinserted == 100)
			{
				s.insert(i);
				lastinserted = i;
			}
			
		}
	}
	float f = (float)count / (b-a+1);
	out.precision(4);
	out << f;
	in.close();
	out.close();
	return 0;
}