题目最大数据量才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;
}
本文介绍了一种针对最大数据量为5000的查询优化方案,通过预处理建立数据表,实现0ms响应时间。该方法利用C++编写,详细展示了如何通过遍历和计算得到每个数的因数数量,并存储起来供后续查询使用。
548

被折叠的 条评论
为什么被折叠?



