当前位置:网站首页>线性筛求积性函数
线性筛求积性函数
2022-07-30 18:00:00 【AC__dream】
题目链接:登录—专业IT笔试面试备考平台_牛客网
样例输入:
5
1
2
3
4
5
样例输出:
1
2
2
3
2
分析:我们可以对q个询问进行暴力求解,每次询问的复杂度就是O(n^0.5),那么总的复杂度就是q*n^0.5,大概是10^8.5,估计过不了,况且如果对于别的题,询问组数再多一些,那么就铁定过不了了。
设f[n]表示n的所有正因数的个数,那么f[n]是一个积性函数,如果不知道积性函数或者不知道为什么f[n]是一个积性函数的话可以看一下:积性函数_AC__dream的博客-CSDN博客
我们可以通过线性筛直接O(n)预处理出来所有的f[n],直接对于每组询问O(1)查询即可。
过程由于在之前积性函数那篇博客中已经讲解的非常明白了,这里就不赘述了
下面是代码:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;
const int N=1e7+10;
bool vis[N];
int prime[N],tt,f[N];
int cnt[N];//cnt[i]记录i的最小质因子的次数
void init()
{
f[1]=1;
for(int i=2;i<N;i++)
{
if(!vis[i])
{
prime[++tt]=i;
f[i]=2;
cnt[i]=1;
}
for(int j=1;j<=tt&&i*prime[j]<N;j++)
{
vis[i*prime[j]]=true;
if(i%prime[j]==0)//prime[j]是i的最小质因子
{
cnt[i*prime[j]]=cnt[i]+1;
f[i*prime[j]]=f[i]/(1+cnt[i])*(2+cnt[i]);
break;
}
cnt[i*prime[j]]=1;
f[i*prime[j]]=f[i]*f[prime[j]];
}
}
}
int main()
{
int q;
init();
cin>>q;
while(q--)
{
int n;
scanf("%d",&n);
printf("%d\n",f[n]);
}
return 0;
}
边栏推荐
- 网络基础(二)-Web服务器-简介——WampServer集成服务器软件之Apache+MySQL软件安装流程 & netstat -an之检测计算机的端口是否占用
- Informatics Olympiad 1915: [01NOIP Popularization Group] Greatest Common Divisor and Least Common Multiple | Luogu P1029 [NOIP2001 Popularization Group] The problem of the greatest common divisor and
- 数据库系统原理与应用教程(067)—— MySQL 练习题:操作题 82-89(十一):数据的增、删、改操作
- 3D机器视觉厂商的场景争夺战役
- What ARC does at compile time and runtime
- PLSQL Developer安装和配置
- Web 3.0入门教程
- DTSE Tech Talk丨第2期:1小时深度解读SaaS应用系统设计
- LayaBox---TypeScript---基础数据类型
- Basic knowledge points in js - BOM
猜你喜欢
华为无线设备配置Mesh业务
Linux-安装MySQL(详细教程)
Web 3.0入门教程
Network Basics (3) 01-Basic Concepts of Networks - Protocols, Host Addresses, Paths and Parameters of URL Addresses & 127.0.0.1 Local Loopback Address & View URL IP Address and Access Ping Space + URL
JVM诊断命令jcmd介绍
432.4 FPS 快STDC 2.84倍 | LPS-Net 结合内存、FLOPs、CUDA实现超快语义分割模型
想要写出好的测试用例,先要学会测试设计
【HMS core】【FAQ】Account Kit、MDM能力、push Kit典型问题合集6
LeetCode 952. 按公因数计算最大组件大小
5分钟搞懂MySQL - 行转列
随机推荐
数据库系统原理与应用教程(065)—— MySQL 练习题:操作题 62-70(九):分组查询与子查询
layaBox---TypeScript---接口
你好好想想,你真的需要配置中心吗?
JVM 上数据处理语言的竞争:Kotlin, Scala 和 SPL
一个 15 年 SAP ABAP 开发人员分享的 SAPGUI 一些个性化设置和实用小技巧试读版
躲避雪糕刺客?通过爬虫爬取雪糕价格
leetcode-684:冗余连接
CMake library search function does not search LD_LIBRARY_PATH
网络基础(二)-Web服务器-简介——WampServer集成服务器软件之Apache+MySQL软件安装流程 & netstat -an之检测计算机的端口是否占用
Ecplise执行C语言报错:cannot open output file xxx.exe: Permission denied
PyTorch 猫狗分类源代码及数据集
快使用flyway管理sql脚本吧~
windwons 下GPU环境和pytorch安装
Logback的使用
智慧中控屏
什么是无损检测设备?
【HMS core】【FAQ】Account Kit、MDM能力、push Kit典型问题合集6
数据库系统原理与应用教程(066)—— MySQL 练习题:操作题 71-81(十):连接查询
Vulkan与OpenGL对比——Vulkan的全新渲染架构
432.4 FPS 快STDC 2.84倍 | LPS-Net 结合内存、FLOPs、CUDA实现超快语义分割模型