全通り試して間に合う。
lli bt(lli m, lli n, bool almost) { if (m > n) return 0; lli ret = 1; ret += bt(m * 10LL + 4LL, n, almost); ret += bt(m * 10LL + 7LL, n, almost); if (!almost) { if (m) ret += bt(m * 10LL, n, true); for (lli i = 1; i <= 9; ++i) { if (i == 4 || i == 7) continue; ret += bt(m * 10LL + i, n, true); } } return ret; } class TheAlmostLuckyNumbersDivOne { public: long long find(long long a, long long b) { lli A = bt(0, a - 1, false); lli B = bt(0, b, false); return B - A; } };