CF385C Bear and Prime Numbers
2024-09-04 03:59:21
思路:
需要对埃氏筛法的时间复杂度有正确的认识(O(nlog(log(n)))),我都以为肯定超时了,结果能过。
实现:
#include <bits/stdc++.h>
using namespace std; bool is_prime[];
vector<int> prime;
int num[], ans[];
void sieve(int n)
{
for (int i = ; i <= n; i++) is_prime[i] = true;
is_prime[] = is_prime[] = false;
for (int i = ; i <= n; i++)
{
if (is_prime[i])
{
prime.push_back(i);
for (int j = * i; j <= n; j += i) is_prime[j] = false;
}
}
}
int main()
{
sieve();
int n, m, x, a, b;
while (scanf("%d", &n) != EOF)
{
memset(num, , sizeof num);
memset(ans, , sizeof ans);
int l = prime.size();
for (int i = ; i < n; i++) { scanf("%d", &x); num[x]++; }
for (int i = ; i < l; i++) // 这段代码和素数筛法是一样的
{
int now = prime[i];
for (int j = now; j <= ; j += now)
{
if (num[j]) ans[now] += num[j];
}
}
for (int i = ; i <= ; i++) ans[i] += ans[i - ];
scanf("%d", &m);
for (int i = ; i < m; i++)
{
scanf("%d %d", &a, &b);
if (a > b) { puts(""); continue; }
a = min(a, ); b = min(b, );
printf("%d\n", ans[b] - ans[a - ]);
}
}
return ;
}
最新文章
- 分布式中使用Redis实现Session共享(二)
- jQuery中取消后续执行的内容
- Linux应用程序基础
- Linux磁盘空间监控告警
- 关于redis的keys命令的性能问题
- C# 程序实现功能目录
- putty连接报NetWork error:connection refused
- 第二章 git 工作区与reset,revert
- shell中一维数组值得获取
- 打印出1,11,21,31,41。。。。。。的shell脚本
- maven_Error building POM (may not be this project&#39;s POM)错误
- linux ptheard 生产者消费者
- NYoj 最舒适的路线
- 开箱即用 - jwt 无状态分布式授权
- Dijkstra堆优化学习
- flutter -webview 报错 err_cleartext_not_permitted
- 修复因为存储空间问题引起的nexus 服务启动异常
- Oracle SQL调优记录
- EF(EntityFramework)与mysql使用,取数据报错,linq实体映射错误
- JWT实战
热门文章
- for、while循环(java基础知识四)
- 一步一步学Silverlight 2系列(7):全屏模式支持
- Redmine 数据库连接错误
- 【转】创建和使用ANDROID LIBRARY工程
- The IBM Blockchain Platform:Installing the development environment
- codforces 1C Ancient Berland Circus(几何)
- P5112 FZOUTSY
- React的深入浅出
- C#语言开发规范-ching版
- C# 中使用Image.FromFile(string path)后,提示该文件正在被另一进程使用XXX的问题