HDU 5327 Olympiad

题意:给l和r,问l和r里有多少个数的每位数字都不同。

解法:打个表用r的减l-1的即可。

代码:

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<string.h>
#include<math.h>
#include<limits.h>
#include<time.h>
#include<stdlib.h>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<vector>
#define LL long long
using namespace std;
bool judge(int x)
{
    int cnt[11] = {0};
    while(x)
    {
        cnt[x % 10]++;
        x /= 10;
    }
    for(int i = 0; i < 10; i++)
        if(cnt[i] > 1)
            return false;
    return true;
}
int num[100005] = {0};
void init()
{
    for(int i = 1; i < 100005; i++)
    {
        if(judge(i))
            num[i] = num[i - 1] + 1;
        else
            num[i] = num[i - 1];
    }
}
int main()
{
    init();
    int T;
    while(~scanf("%d", &T))
    {
        while(T--)
        {
            int l, r;
            scanf("%d%d", &l, &r);
            printf("%d
", num[r] - num[l - 1]);
        }
    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/Apro/p/4695621.html