標籤:
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=5327
打表預先處理資料範圍內所有的合格數再查詢即可。
1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <algorithm> 5 #include <iostream> 6 #include <cmath> 7 #include <cctype> 8 #include <queue> 9 #include <map>10 #include <set>11 #include <stack>12 #include <list>13 #include <vector>14 15 using namespace std;16 17 const int maxn = 100010;18 int a, b;19 int num[maxn];20 int vis[10];21 22 void init() {23 memset(num, 0, sizeof(num));24 int tmp, flag;25 num[0] = 0;26 for(int i = 1; i < maxn; i++) {27 memset(vis, 0, sizeof(vis));28 flag = 0;29 num[i] = num[i-1];30 int k = i;31 while(k) {32 tmp = k % 10;33 if(!vis[tmp]) {34 vis[tmp] = 1;35 }36 else {37 flag = 1;38 break;39 }40 k /= 10;41 }42 if(!flag) {43 num[i]++;44 }45 }46 }47 int main() {48 // freopen("in", "r", stdin);49 int T;50 init();51 scanf("%d", &T);52 while(T--) {53 scanf("%d %d", &a, &b);54 printf("%d\n", num[b] - num[a-1]);55 }56 }
[HDOJ5327]Olympiad