【JZOJ5250】【GDOI2018模拟】质数(数论)
来源:互联网 发布:金融网络理财产品排行 编辑:程序博客网 时间:2024/06/09 05:29
Description
Solution
要求
对于所有不同的质因子,然后再2的次幂一下,很明显可以知道是选与不选的问题。
那么要求
我们要求gcd为1的个数可以考虑容斥一下。
那么上式就转化成
我们先枚举d,设ik=j,因为
那么式子变成
然后后面的式子就变成
g(i)表示i的约数个数
然后再把d提出来式子就变成
式子等于
然后直接暴力就好了
Code
#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>#include<math.h>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;typedef long long ll;const int maxn=1e6+7,mo=998244353;ll i,j,k,l,t,m,ans,q,n,r;int er[21],p[maxn],mu[maxn],s[maxn];bool bz[maxn];int main(){// freopen("fan.in","r",stdin); fo(i,2,maxn-7){ if(!bz[i])p[++p[0]]=i,mu[i]=-1; fo(j,1,p[0]){ t=p[j]*i;if(t>maxn-7)break; bz[t]=1;if(i%p[j]==0){break;} mu[t]=-mu[i]; } } mu[1]=1; scanf("%lld",&n); fo(i,1,sqrt(n)){ q=0;t=n/(i*i); l=1; while(l<=t){ r=t/(t/l); q=(q+(r-l+1)*(t/l))%mo; l=r+1; } ans=(ans+mu[i]*q)%mo; } ans=(ans+mo)%mo; printf("%lld\n",ans);}
阅读全文
1 0
- 【JZOJ5250】【GDOI2018模拟】质数(数论)
- [JZOJ5250]【GDOI2018模拟8.11】质数
- 【jzoj5250】【GDOI2018模拟8.11】【质数】
- 【JZOJ5250】【GDOI2018模拟8.11】质数
- 【GDOI2018模拟7.8】质数
- 【GDOI2018模拟8.11】质数
- 【GDOI2018模拟8.11】质数
- [JZOJ5250]质数
- 质数,函数【GDOI2018模拟7.8】
- 【GDOI2018模拟7.8】质数 乱搞+哥德巴赫猜想
- 【JZOJ 5250】【GDOI2018模拟8.11】质数
- JZOJ 5224【GDOI2018模拟7.12】C(数论&&杜教筛)
- 质数 数论
- 【GDOI2018模拟7.6】吃干饭
- 【GDOI2018模拟7.9】期末考试
- 【GDOI2018模拟7.8】矩阵
- 【GDOI2018模拟7.10】B
- 【GDOI2018模拟7.10】C
- 桥接模式
- android四种启动模式
- mongodb学习:查询
- React Native热更新
- Android Sqlite数据库常用语句整理
- 【JZOJ5250】【GDOI2018模拟】质数(数论)
- 多节点服务器定时任务重复处理的问题
- 程序员应该关注的一些事儿
- c/c++ {}代码块的使用
- ARM学习之中断体系结构
- react-native-code-push进阶篇
- 验证码
- Python学习
- 网络基础知识一