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\n", num[r] - num[l - 1]);
}
}
return 0;
}

浙公网安备 33010602011771号