HDU 5327 Olympiad

xiaoxiao2021-02-27  412

这道题一看,就觉得,如果直接暴力好像有点悬。想了一下,突然发现T很大,那么我就先打表然后O(1)输出即可。

#include<bits/stdc++.h> using namespace std; int cnt[100005]; void init() { int c = 0; bool vst[15], flag; for(int i = 1; i <= 100000; i++) { int j = i; memset(vst, 0, sizeof(vst)); flag = 1; while(j) { if(!vst[j % 10]) vst[j % 10] = 1; else { flag = 0; break; } j /= 10; } if(flag) { c++; cnt[i] = c; } else cnt[i] = c; } } int main() { int T, a, b; init(); cin >> T; while(T--) { cin >> a >> b; cout << cnt[b] - cnt[a - 1] << endl; } return 0; }

转载请注明原文地址: https://www.6miu.com/read-3216.html

最新回复(0)