ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined) BRecursive Queries

Posted Visitor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined) BRecursive Queries相关的知识,希望对你有一定的参考价值。

【链接】 我是链接,点我呀:)
【题意】


在这里输入题意

【题解】


写个记忆化搜索。
接近O(n)的复杂度吧

【代码】

#include <bits/stdc++.h>
using namespace std;

const int N = 1e6;

int g[N+10];
int pre[N+10][20];

int f(int x){
    int temp = 1;
    while (x){
        if (x%10!=0)
            temp*=(x%10);
        x/=10;
    }
    return temp;
}

int dfs(int x){
    if (g[x]!=0) return g[x];
    if (x<10){
        return g[x] = x;
    }else{
        return g[x] = dfs(f(x));
    }
}

int main(){
    #ifdef LOCAL_DEFINE
        freopen("rush_in.txt", "r", stdin);
    #endif
    ios::sync_with_stdio(0),cin.tie(0);


    for (int i = 1;i <= N;i++)
        if (g[i]==0) dfs(i);

    for (int i = 1;i <= N;i++){
        for (int j = 1;j <= 9;j++)
            pre[i][j] = pre[i-1][j];
        if (g[i]<=9) pre[i][g[i]]++;
    }

    int q;
    cin >> q;
    while (q--){
        int l,r,x;
        cin >> l >> r >> x;
        cout<<pre[r][x]-pre[l-1][x]<<endl;
    }
    return 0;
}

以上是关于ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined) BRecursive Queries的主要内容,如果未能解决你的问题,请参考以下文章

ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined) DTree

ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined) A Palindromic Supersequence(代

ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined) ---d

ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined) C Permutation Cycle

ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined) A

ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined) D