Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <bits/stdc++.h>#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <queue>using namespace std;#define LL long long#define MP make_pair#define md (ll + rr >> 1)#define inf 0x3f3f3f3f#define mod 1000000007#define eps 1e-8#define N 100050#define M 200020LL dp[20][2];int dig[20];LL dfs(int len, int s, int limit){if(!len) return s;if(!limit && dp[len][s] != -1) return dp[len][s];LL ret = 0;int ed = limit ? dig[len] : 9;for(int i = 0; i <= ed; ++i){if(i == 4 || i == 7)ret += dfs(len - 1, 1, limit && i == ed);elseret += dfs(len - 1, s, limit && i == ed);