P2350-[HAOI2012]外星人【线性筛】
正题
题目链接:https://www.luogu.com.cn/problem/P2350
题目大意
给出\(N\)质因数分解之后的结果,求每次\(N=\varphi(N)\),多少次后\(N=1\)。
\(N=\prod_{i=1}^mp_i^{q_i},1\leq m\leq 2000,1\leq p_i\leq 10^5,1\leq q_i\leq 10^9\)
解题思路
我是傻逼((((
首先\(\varphi(\prod_{i=1}^mp_i^{q_i})=\prod_{i=1}^m(p_i-1)p_i^{q_i-1}\)
开始想太多了,以为传递的延迟影响很大,后来发现设因为\(p_i-1\)一定是偶数,所以把\(p_i-1\)分解后一定有\(2\)这个质因子,所以只有在\(N\)没有\(2\)这个质因子的情况下传递的延迟会造成一次的影响,否则都没有影响,因为\(2\)还没有抵消延迟就已经结束了。
所以我们只需要考虑每个质数能传递出多少个\(2\),这个用线性筛可以解决因为最后更新一个质数的一定是新增的一个质因子。
code
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+10,M=1e5+10;
int T,n,cnt,pri[N],f[M],v[M];
void Prime(){
f[1]=1;
for(int i=2;i<M;i++){
if(!v[i])pri[++cnt]=i,f[i]=f[i-1];
for(int j=1;j<=cnt&&i*pri[j]<M;j++){
v[i*pri[j]]=1;
f[i*pri[j]]=f[i]+f[pri[j]];
if(i%pri[j]==0)break;
}
}
return;
}
int main()
{
Prime();
scanf("%d",&T);
while(T--){
scanf("%d",&n);
if(!n)puts("0");
long long ans=1;
for(int i=1;i<=n;i++){
int x,w;
scanf("%d%d",&x,&w);
if(x==2)ans--;
ans+=1ll*f[x]*w;
}
printf("%lld\n",ans);
}
return 0;
}
P2350-[HAOI2012]外星人【线性筛】的更多相关文章
- Bzoj 2749: [HAOI2012]外星人 欧拉函数,数论,线性筛
2749: [HAOI2012]外星人 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 568 Solved: 302[Submit][Status][ ...
- 【BZOJ 2749】 2749: [HAOI2012]外星人 (数论-线性筛?类积性函数)
2749: [HAOI2012]外星人 Description Input Output 输出test行,每行一个整数,表示答案. Sample Input 1 2 2 2 3 1 Sample Ou ...
- 题解 P2350 【[HAOI2012]外星人】
题目链接 还是本宝宝写题解的一贯习惯 $ :$ 先吐槽吐槽这道题$……$ 相信不少同学第一眼一定没有看懂题.(因为我也没看懂) ~~初中~~数学知识: 对于函数 $ f(x)$ 有 $f^{-1}(x ...
- 【bzoj2749】[HAOI2012]外星人
2749: [HAOI2012]外星人 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 677 Solved: 360[Submit][Status][ ...
- bzoj2693--莫比乌斯反演+积性函数线性筛
推导: 设d=gcd(i,j) 利用莫比乌斯函数的性质 令sum(x,y)=(x*(x+1)/2)*(y*(y+1)/2) 令T=d*t 设f(T)= T可以分块.又由于μ是积性函数,积性函数的约束和 ...
- BZOJ 2693: jzptab [莫比乌斯反演 线性筛]
2693: jzptab Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1194 Solved: 455[Submit][Status][Discu ...
- BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4436 Solved: 1957[Submit][Status][Discuss ...
- 【BZOJ-4514】数字配对 最大费用最大流 + 质因数分解 + 二分图 + 贪心 + 线性筛
4514: [Sdoi2016]数字配对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 726 Solved: 309[Submit][Status ...
- 洛谷P3383 【模板】线性筛素数
P3383 [模板]线性筛素数 256通过 579提交 题目提供者HansBug 标签 难度普及- 提交 讨论 题解 最新讨论 Too many or Too few lines 样例解释有问题 ...
随机推荐
- Docker运行中文版GitLab
docker-compose.yml version: '3' services: web: image: 'twang2218/gitlab-ce-zh:10.5' restart: always ...
- vue路由history模式,nginx配置
nginx配置内容 # For more information on configuration, see: # * Official English Documentation: http://n ...
- vlc播放器设置开机自动全屏播放网络视频流
因工作需要,要用vlc视频播放器实现开机自动全屏播放某个网络视频流.百度了下,说的都很模糊,经过整理,设置方法如下: 一,添加视频流地址:rtsp://wowzaec2demo.streamlock. ...
- Collectors.reducing总结
Collectors.reducing总结 1. 方法签名 一个参数 public static <T> Collector<T, ?, Optional<T>> ...
- AspNetCore WebApi
需求 前几天,马老板给小明和小红一个"待办事项"网站,小明负责后端,小红负责前端,并要求网站可以同时在 Windows.和 Linux 上运行. 小明整理了一下"待办事项 ...
- ArcGIS:从DEM数据提取对应点的高程
通过Extract Value to Points从DEM数据中提取所需点的高程. 方法/步骤 将DEM数据文件和一个shapefile点文件(分别命名为"DEM"和"P ...
- 区间k大数训练
问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个包含一个正整数m,表示询问个数 ...
- Ubuntu18.04 + NVidia显卡 + Anaconda3 + Tensorflow-GPU 安装、配置、测试 (无需手动安装CUDA)
其中其决定作用的是这篇文章 https://www.pugetsystems.com/labs/hpc/Install-TensorFlow-with-GPU-Support-the-Easy-Wa ...
- vue element-ui el-date-picker 数据可以更改,但是前端不显示的更改后的数据问题
template: <el-form-item label="有效时间:" prop="validTime"> ...
- Linux(一)——简介
aaa https://www.cnblogs.com/three-fighter/p/14644152.html#navigator