区间问题,前缀和(Olympiad,HDU 5327)

题目链接:

https://vjudge.net/problem/HDU-5327


如果数据不是很大的话,那就考虑暴力前缀和吧,又快又好。

数位DP不熟练。


代码

#include
#include
using namespace std;
const int maxn = 1000010;

int sum[maxn];
int vis[10];

int cul(int x)
{
    memset(vis,0,sizeof(vis));
    while(x)
    {
        if(vis[x%10]) return 0;
        vis[x%10]=1;
        x/=10;
    }
    return true;
}

void init()
{
    for(int i=1;i-1]+cul(i);
}

void solve()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d\n",sum[b]-sum[a-1]);
}

int main()
{
    init();
    int T;
    scanf("%d",&T);
    while(T--) solve();
    return 0;
}

你可能感兴趣的:(区间问题,数位DP,前缀和)