【发布时间】:2020-02-19 15:38:09
【问题描述】:
首先,请随时改进问题的格式
Goswin von Brederlow 已经解决了这个问题!
你好,我正在练习编程,遇到了这个问题,我不知道如何解决这个问题的最佳方法:
问题有 T 个测试用例,包括:
给定一个范围 L 和 R,找出有多少个数满足约束:
i) 数是完美的正方形;
ii) sqrt(Number) 是一个素数。
限制:
1
1
时间限制:1 秒
所以,我尝试了一个简单的想法,即使用 unodered_map(lld, bool) 对每个 sqrt(Number) 的所有答案进行预处理,因为 Number 是一个完美的正方形
之后,我传入范围 pow(sqrt(l), 2) 并将其递增下一个奇数...例如:4 9 16 25,差值是奇数:5 7 9...
我的代码:
long long int l, r; scanf("%lld %lld", &l, &r);
long long int odd = ceil(sqrt(l)), n = odd*odd;
odd = (2*odd) + 1;
long long int ans = 0;
while((n >= l && n <= r)){
it = h.find(n);
ans = ans + it->second;
n = n + odd;
odd = odd + 2;
}
但是我仍然有 TLE,我需要一些帮助,谢谢!
【问题讨论】:
-
我需要一些帮助您需要按照此处的说明进行操作 minimal reproducible example。
标签: c++ time-complexity primes