SRM421 div2 hard

親切に0から9まで載っていたから助かった
っていうかこれないと無理

#include <string>
#include <vector>

using namespace std;

class FloorIndicator
{
	public:

		vector<int> canDig(vector<string> dig,vector<string> ind,int pos)
		{
			vector<int> r;
			for(int n=0;n<10;n++)
			{
				bool b=true;
				for(int i=0;i<5;i++)
					for(int j=0;j<3;j++)
						if(ind[i][4*pos+j]=='#' && dig[i][4*n+j]=='.')
							b=false;
				if(b)
					r.push_back(n);
			}
			return r;
		}

		double averageFloor(int N, vector <string> indicator)
		{
			vector<string> digits;
			digits.push_back("###...#.###.###.#.#.###.###.###.###.###");
			digits.push_back("#.#...#...#...#.#.#.#...#.....#.#.#.#.#");
			digits.push_back("#.#...#.###.###.###.###.###...#.###.###");
			digits.push_back("#.#...#.#.....#...#...#.#.#...#.#.#...#");
			digits.push_back("###...#.###.###...#.###.###...#.###.###");

			double ans=0;
			for(int pos=1,t=1;pos<=N;pos++,t*=10)
			{
				vector<int> v=canDig(digits,indicator,N-pos);
				if(v.size()==0)
					return -1.0;

				double ave=0;
				for(int i=0;i<(int)v.size();i++)
					ave+=v[i];
				ave/=(double)v.size();

				ans+=ave*(double)t;
			}

			return ans;
		}
};