【BZOJ2813】奇妙的Fibonacci(结论,线性筛)
结论:fj∣fif_j|f_ifj∣fi 等价于 j∣ij|ij∣i。
证明:(来自DTZ巨佬)
于是询问就变成了求一个数的因数个数和因数的平方和。
设 x=p1k1p2k2⋯pmkmx=p_1^{k_1}p_2^{k_2}\cdots p_m^{k_m}x=p1k1p2k2⋯pmkm。
那么 xxx 的因数个数为 ∏i=1m(ki+1)\prod\limits_{i=1}^m(k_i+1)i=1∏m(ki+1),因数平方和为 ∏i=1m∑j=0kipi2j\prod\limits_{i=1}^m\sum\limits_{j=0}^{k_i}p_i^{2j}i=1∏mj=0∑kipi2j。
用线性筛求解,有一个小 trick 是记录一个数 xxx 除尽其最小质因子后的数 nop(x)nop(x)nop(x),具体实现过程详见代码。
#include<bits/stdc++.h>#define N 10000010using namespace std;namespace modular
{const int mod=1000000007;inline int add(const int x,const int y){return x+y>=mod?x+y-mod:x+y;}inline int dec(const int x,const int y){return x-y<0?x-y+mod:x-y;}inline int mul(const int x,const int y){return 1ll*x*y%mod;}
}using namespace modular;inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^'0');ch=getchar();}return x*f;
}int q,a,b,c;
int cnt,prime[N];
int nop[N],s1[N],s2[N];
bool notprime[N];void init()
{s1[1]=1,s2[1]=1;for(int i=2;i<=c;i++){if(!notprime[i]){prime[++cnt]=i;nop[i]=1;s1[i]=2;s2[i]=add(mul(i,i),1);}for(int j=1,x;j<=cnt&&(x=(i*prime[j]))<=c;j++){notprime[x]=1;if(!(i%prime[j])){nop[x]=nop[i];s1[x]=mul(s1[nop[i]],add(s1[i/nop[i]],1));s2[x]=mul(s2[nop[i]],add(mul(s2[i/nop[i]],mul(prime[j],prime[j])),1));break;}nop[x]=i;s1[x]=mul(s1[i],s1[prime[j]]);s2[x]=mul(s2[i],s2[prime[j]]);}}
}int main()
{q=read();int x=read();a=read(),b=read(),c=read();init();int ans1=0,ans2=0;while(q--){ans1=add(ans1,add(s1[x],(x&1)));ans2=add(ans2,add(s2[x],(x&1)*4));x=(1ll*x*a+b)%c+1;}printf("%d\n%d\n",ans1,ans2);return 0;
}
/*
2
2 2 1 8
*/
【BZOJ2813】奇妙的Fibonacci(结论,线性筛)相关推荐
- 【20181027T1】洛阳怀【推结论+线性筛+分解质因数+GCD性质】
原题:CF402D [错解] 唔,先打个表看看 咦,没有坏质数好像就是质因数个数啊 那有坏质数呢? 好像变负数了 推出错误结论:f(x)=x的质因数个数,如果有个坏质数,就乘上-1 然后乱搞,起码花了 ...
- 【BZOJ2813】奇妙的Fibonacci
Description Fibonacci数列是这样一个数列: F1 = 1, F2 = 1, F3 = 2 . . . Fi = Fi-1 + Fi-2 (当 i >= 3) pty忽 ...
- 洛谷 - P1217 [USACO1.5]回文质数 Prime Palindromes(欧拉线性筛+数论小知识)
题目链接:点击查看 题目大意:给出一个a和b,求出区间[a,b]中所有回文质数,回文质数指的是一个数既是回文数也是质数 题目分析:首先质数好判断,我们只需要用欧拉筛预处理打好表即可,判断回文数我们也只 ...
- 【bzoj2693】jzptab 莫比乌斯反演+线性筛
题目描述 输入 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M 输出 T行 每行一个整数 表示第i组数据的结果 样例输入 1 4 5 样例输出 122 题解 莫比乌斯反演+线性筛 由 ...
- 洛谷P2257 YY的GCD 莫比乌斯函数反演+线性筛
洛谷P2257 YY的GCD 标签 莫比乌斯反演 线性筛 前言 这题貌似和莫反没多大关系,就是用到了一个莫比乌斯函数的性质了,其他就是推公式,优化和式. 我的第一道懵逼反演-真的好难好难-而且套路特别 ...
- 线性筛与欧拉函数、莫比乌斯函数
网上关于素数筛的资料很多,这里只是给出弱鸟整理的几个线性筛和应用. 最朴素的素数筛--埃拉托斯特尼筛法(Sieve of Eratosthenes) 复杂度 Olognlogn int primes[ ...
- 积性函数的性质及证明 + 线性筛
引言 在数论问题中,积性函数有着广泛的应用. 如在莫比乌斯反演问题中,函数变换之后如何快速维护前缀和往往是最重要也是最难的一步.如果维护的函数具有积性,那就可以尝试利用线性筛在O(n)O(n)O(n) ...
- 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )
整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn)) ②求[1,n]之间每个数的质因数 ...
- 【bzoj2694】Lcm 莫比乌斯反演+线性筛
题目描述 求$\sum\limits_{i=1}^n\sum\limits_{j=1}^m|\mu(gcd(i,j))|lcm(i,j)$,即$gcd(i,j)$不存在平方因子的$lcm(i,j)$之 ...
- [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉
本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉 题目大意 给定n,m,求在1到n!内与m!互质的 ...
最新文章
- Pokémon Go数据收集是否带来隐私问题
- 十一.python面向对象(接口)abstractmethod,ABCMeta
- avformat_find_stream_info 时间太长
- J2EE和Java EE
- [笔记] 分频计数(七)
- 021_jdbc-mysql入门
- Mybatis学习之配置优化
- IUnknown接口QueryInterface函数介绍
- 使用NPOI库导入导出EXCEL
- 深入react技术栈(3):React组件
- [html] H5页面在微信中如何禁止分享给好友和朋友圈?
- 还需要更多东西吗?这里有一些要做的事情
- Netty工作笔记0037---主从Reactor多线程
- 35岁以上还没结婚的男女们,过的如何?
- Java从入门到精通 第13章 抽象类与接口
- 使用web.xml控制Web应用的行为
- 中企海外周报 | 华为在德国发布mate30系列手机;一汽新车亮相法兰克福车展
- C 语言 随机prim算法 生成迷宫
- python列表按照长度排序_Python程序根据元素的长度对列表进行排序?
- BNUOJ 26474 Bread Sorting