hihoCoder Challenge 20 register

Ended

Participants:577

Verdict:Accepted
Submitted:2016-05-06 19:27:07

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#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 200020
LL 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);
        else
            ret += dfs(len - 1, s, limit && i == ed);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX