解いた問題

5/21/2012

SRM403 Div2 Medium

500

やるだけ



class TheLuckyNumbers {
public:
  int count(int a, int b)
  {   
    const lli N = 1000000000;

    set<lli> s;
    s.insert(4);
    s.insert(7);
    while (true) {
      set<lli> t = s;
      FOR (i, t) {
        lli n = *i * 10LL + 4LL;
        lli m = *i * 10LL + 7LL;
        if (n < N) s.insert(n);
        if (m < N) s.insert(m);
      }
      if (s.size() == t.size()) break;
    }
   
    int x = 0;
    int y = 0;
    FOR (i, s) {
      x += *i <= (a - 1);
      y += *i <= b;
    }
    return y - x;
  }
};