题目最大数据量才5000
直接打了一个5000的表,每次查询即可
0ms代码如下:
#include <cmath>
#include <cstdio>
#include <iostream>
#include <algorithm>
#define MAXN 5010
#define LL long long
using namespace std;
int cnt[MAXN+10] = { 0 };
void print(int x) {
for(int i=1; i<=x; ++i) {
int m = (int)sqrt(i+0.5);
for(int j=1; j<=m; ++j)
if(i%j == 0) {
cnt[i]++;
if(j != i/j)
cnt[i]++;
}
}
}
int main(void) {
int n, a, b;
print(MAXN);
scanf("%d", &n);
while(n--) {
scanf("%d%d", &a, &b);
int ans = a;
int maxs = -1;
for(int i=a; i<=b; ++i) {
// printf("cnt[%d] = %d\n", i, cnt[i]);
if(cnt[i] > maxs) {
maxs = cnt[i];
ans = i;
}
}
cout << ans << endl;
}
return 0;
}