#杜教筛,欧拉函数,整除分块#HDU 6683 Rikka with Geometric Sequen
题目
由\(1,2,\dots,n-1,n\)组成的序列中有多少个子序列是等比数列\((n\leq 5*10^{17})\)
分析
分类讨论,先设公比为\(q=\frac{i}{j}[gcd(i,j)==1,i>j]\)
首先长度为1或2的有\(\frac{n(n+1)}{2}\)个
考虑长度大于3的可以暴力处理,枚举长度和分子\(i\)
公比不同的等比数列有\(\varphi(i)\)个,首项一共有\(\lfloor\frac{n}{i^{len-1}}\rfloor\)中情况
那么
\]
长度等于3同理可得
\]
整除分块+杜教筛,就不会TLE了
怎么用杜教筛??套模板就可以了
代码
#include <cstdio>
#include <cctype>
#include <cmath>
#include <map>
#define rr register
using namespace std;
const int N=40000011,mod=998244353;
int phi[N],prime[N],Cnt; bool v[N];
typedef long long lll; map<int,int>uk;
inline signed mo(int x,int y){return x+y>=mod?x+y-mod:x+y;}
inline signed od(int x,int y){return x<y?x+mod-y:x-y;}
inline void Pro(int n){
phi[1]=1;
for (rr int i=2;i<=n;++i){
if (!v[i]) prime[++Cnt]=i,phi[i]=i-1;
for (rr int j=1;j<=Cnt&&prime[j]<=n/i;++j){
v[i*prime[j]]=1,phi[i*prime[j]]=phi[i]*(prime[j]-1);
if (i%prime[j]==0) {
phi[i*prime[j]]+=phi[i];
break;
}
}
}
for (rr int i=2;i<=n;++i) phi[i]=mo(phi[i-1],phi[i]);
}
inline signed sphi(int n){
if (n<=N-11) return phi[n];
if (uk.find(n)!=uk.end()) return uk[n];
rr int ans=(1ll*n*(n+1)>>1)%mod;
for (rr int l=2,r;l<=n;l=r+1)
r=n/(n/l),ans=od(ans,1ll*sphi(n/l)*(r-l+1)%mod);
return ans;
}
signed main(){
Pro(N-11); rr int Test;
for (scanf("%d",&Test);Test;--Test){
rr lll n,t; scanf("%lld",&n);
rr int ans=((n%mod)*((n%mod)+1)>>1)%mod;
rr int t1=sqrt(n),t2=pow(n,1.0/3);
for (rr int l=2,r,w;l<=t1;l=r+1)
t=n/l/l,r=sqrt(n/t),ans=mo(ans,t*od(sphi(r),sphi(l-1))%mod);
for (rr int i=2;i<=t2;++i)
for (rr lll t=1ll*i*i*i;;t*=i){
ans=mo(ans,(n/t)*od(phi[i],phi[i-1])%mod);
if (t>n/i) break;
}
printf("%d\n",ans);
}
return 0;
}
#杜教筛,欧拉函数,整除分块#HDU 6683 Rikka with Geometric Sequen的更多相关文章
- 51Nod.1237.最大公约数之和 V3(莫比乌斯反演 杜教筛 欧拉函数)
题目链接 \(Description\) \(n\leq 10^{10}\),求 \[\sum_{i=1}^n\sum_{j=1}^ngcd(i,j)\ mod\ (1e9+7)\] \(Soluti ...
- luogu P3768 简单的数学题 杜教筛 + 欧拉反演 + 逆元
求 $\sum_{i=1}^{n}\sum_{j=1}^{n}ijgcd(i,j)$ 考虑欧拉反演: $\sum_{d|n}\varphi(d)=n$ $\Rightarrow \sum_{i ...
- 2019年南京网络赛E题K Sum(莫比乌斯反演+杜教筛+欧拉降幂)
目录 题目链接 思路 代码 题目链接 传送门 思路 首先我们将原式化简: \[ \begin{aligned} &\sum\limits_{l_1=1}^{n}\sum\limits_{l_2 ...
- The Euler function(线性筛欧拉函数)
/* 题意:(n)表示小于n与n互质的数有多少个,给你两个数a,b让你计算a+(a+1)+(a+2)+......+b; 初步思路:暴力搞一下,打表 #放弃:打了十几分钟没打完 #改进:欧拉函数:具体 ...
- 素数的线性筛 && 欧拉函数
O(n) 筛选素数 #include<bits/stdc++.h> using namespace std; const int M = 1e6 + 10 ; int mindiv[M] ...
- HDU5780 gcd (BestCoder Round #85 E) 欧拉函数预处理——分块优化
分析(官方题解): 一点感想: 首先上面那个等式成立,然后就是求枚举gcd算贡献就好了,枚举gcd当时赛场上写了一发O(nlogn)的反演,写完过了样例,想交发现结束了 吐槽自己手速慢,但是发了题解后 ...
- BZOJ 2818 GCD 素数筛+欧拉函数+前缀和
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2818 题意:给定整数N,求1<=x,y<=n且Gcd(x,y)为素数的数对( ...
- [bzoj 2190][SDOI2008]仪仗队(线性筛欧拉函数)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2190 分析:就是要线性筛出欧拉函数... 直接贴代码了: memset(ans,,sizeof ...
- 积性函数&线性筛&欧拉函数&莫比乌斯函数&因数个数&约数个数和
只会搬运YL巨巨的博客 积性函数 定义 积性函数:对于任意互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数. 完全积性函数:对于任意整数a和b有性质f(ab)=f(a)f(b)的数论函数 ...
- Farey Sequence (素筛欧拉函数/水)题解
The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/ ...
随机推荐
- 解读平台工程,DevOps真的死了吗?不,它只是换了个马甲而已,弥补了DevOps空心理论,让DevOps继续发展壮大
最**台工程这个概念越来越火爆,Gartner 的预测,到 2026 年,80% 的软件工程组织将拥有*台工程团队,来提供内部服务.组件和应用程序交付工具,作为可重复使用的资源.本篇文章将带你走进*台 ...
- Kotlin 函数 与 lambda 表达式
一.函数 代码块函数体: fun sum(x: Int, y: Int): Int { return x + y } 表达式函数体: fun sum(x: Int, y: Int) = x + y 使 ...
- Unity3D常用方法
1.StartCoroutine(Thread1()) 启动协程运行Thread1()方法. 注意是协程,不是线程,详情见:https://www.jianshu.com/p/6d923cb0c900 ...
- 机器学习可解释性--LIME
A Unified Approach to Interpreting Model Predictions trusting a prediction or trusting a model 如果⼀个机 ...
- C++ 总结大项目:机房预约系统项目(数据结构 +指针+class(类操作)+面向对象三大特性[继承+多态+封装]+文件(读,写,保存,重写,重建,清空)+string(比较,截取,追加),+容器多个操作,嵌套+算法+清空数据)
1 /** 2 * 项目名称:机房预约系统 3 * 时 间:2021-08 4 * 作 者:Bytezero!·zhenglei 5 * 6 * 系统简介: 7 * 学校有几个规格不同的机房,由于使用 ...
- jsPlumb导航器
开源项目地址:https://gitee.com/easyxaf/jsplumb-navigator 前言 jsPlumb可用于连接DOM元素,它不依赖框架,所以与主流框架都可以无缝的集成.但比较遗憾 ...
- 动态挂载指定vue组件 Vue.extend $mount('#aaa111')
模板中要有定位 <template> <div id="aaa111"></div> </template> 指定某个函数执行 im ...
- vscode sftp 代码同步到服务器
然后执行 ctrl+shift+p ,搜索 SFTP:Config 回车后,会生成一个".vscode/sftp.json",这个就是配置文件 参考:VsCode SFTP插件详细 ...
- ESP8266 SPI 开发之软硬基础分析
一 什么是SPI接口? SPI是一种高速.高效率的串行接口技术.通常由一个主模块和一个或多个从模块组成,主模块选择一个从模块进行同步通信,从而完成数据的交换.SPI是一个环形结构,通信时需要至少4根线 ...
- gulp-imagemin版本9图片压缩
由于网上大多数的博文已经比较久,参考性不大 版本 gulp PS D:\XXX\github\hexo> gulp -v CLI version: 2.3.0 Local version: 4. ...