【bzoj2813】 奇妙的Fibonacci数列 线性筛
Description
Fibonacci数列是这样一个数列:
F1 = 1, F2 = 1, F3 = 2 . . .
Fi = Fi-1 + Fi-2 (当 i >= 3)
pty忽然对这个古老的数列产生了浓厚的兴趣,他想知道:对于某一个Fibonacci数Fi,
有多少个Fj能够整除Fi (i可以等于j),他还想知道所有j的平方之和是多少。
Input
第一行一个整数Q,表示Q个询问。
第二行四个整数:Q1, A, B, C
第i个询问Qi = (Qi-1 * A + B) mod C + 1(当i >= 2)
Output
Ai代表第i个询问有多少个Fj能够整除FQi。
Bi代表第i个询问所有j的平方之和。
输出包括两行:
第一行是所有的Ai之和。
第二行是所有的Bi之和。
由于答案过大,只需要输出除以1000000007得到的余数即可。
Sample Input
2
2 2 1 8
Sample Output
6
55
Hint
对于100%的数据保证:Q <= 3*10^6,C <= 10^7,A <= 10^7,B <= 10^7,1 <= Q1<= C
Sol
首先我们有\((F_i,F_j)=F_{(i,j)}\)我不会证qwq
我们钦定\(F_i\)之后,如果\((F_i,F_j)=F_j\)那么\(F_j\)就能够整除\(F_i\)。
等价于\((i,j)=j\)
显然\(i\)的约数全部满足这一性质。
所以我们实际要求的是每个数字的约数个数和和约数平方和。
我们设e[i]为i的最小质因数次数,d[i]为i除去最小质因子之后的商,g[i]为i的约数个数,f[i]为i的约数平方和 。
那么在线性筛时:
质数:e[i]=1,d[i]=1,g[i]=2,f[i]=i^2+1;
记k=i*pri[j];
i%pri[j]==0:e[k]=e[i]+1,d[k]=d[i],g[k]=g[i]/(e[i]+1)*(e[k]+1),f[k]=f[i]*pri[j]^2+f[d[i]];
i%pri[j]!=0:e[k]=1,d[k]=i,g[k]=g[i]*2,f[k]=f[i]*(pri[j]^2+1);
e,d,g的表达式很好理解,f的第一个式子含义是把这个质因子次数+1时,除了这个最小质因子以外的因子平方和都不变,新产生的因数的平方和要乘以这个质因子。f的第二个式子含义是新产生的因数的平方和加上原来的平方和。
要注意f[2]=1,所以如果x是奇数,没有算入贡献,要特判。
Code
#include <cstdio>
int i,T,x,a,b,c,t,d[10000005],e[10000005],f[10000005],g[10000005],p[10000005],v[10000005],sg,sf,P=1000000007;
int main()
{
for(g[1]=f[1]=1,i=2;i<=10000000;i++)
{
if(!v[i]){p[++t]=i;e[i]=d[i]=1;g[i]=2;f[i]=(1ll*i*i+1)%P;}
for(int j=1,k;j<=t&&(k=i*p[j])<=10000000;j++)
{
v[k]=1;
if(i%p[j]==0)
{
e[k]=e[i]+1;g[k]=g[i]/(e[i]+1)*(e[k]+1);d[k]=d[i];f[k]=(1ll*f[i]*p[j]%P*p[j]%P+f[d[i]])%P;
break;
}
else e[k]=1,d[k]=i,g[k]=g[i]<<1,f[k]=f[i]*(1ll*p[j]*p[j]%P+1)%P;
}
}
for(scanf("%d%d%d%d%d",&T,&x,&a,&b,&c),a%=c,b%=c;T--;x=(1ll*x*a+b)%c+1)
{
sg+=g[x]+(x&1);sf+=f[x]+4*(x&1);
if(sg>=P) sg-=P;if(sf>=P) sf-=P;
}
printf("%d\n%d\n",sg,sf);
}
【bzoj2813】 奇妙的Fibonacci数列 线性筛的更多相关文章
- bzoj千题计划204:bzoj2813: 奇妙的Fibonacci
http://www.lydsy.com/JudgeOnline/problem.php?id=2813 若j能整除i,则f[j]能整除f[i] 题目就变成了求约数个数和.约数的平方和 http:// ...
- BZOJ_2813_奇妙的Fibonacci_线性筛
BZOJ_2813_奇妙的Fibonacci_线性筛 Description Fibonacci数列是这样一个数列: F1 = 1, F2 = 1, F3 = 2 . . . Fi = Fi-1 + ...
- 【BZOJ2813】奇妙的Fibonacci
Description Fibonacci数列是这样一个数列: F1 = 1, F2 = 1, F3 = 2 . . . Fi = Fi-1 + Fi-2 (当 i >= 3) pty忽 ...
- BZOJ 2813: 奇妙的Fibonacci
2813: 奇妙的Fibonacci Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 497 Solved: 134[Submit][Status][ ...
- 关于奇妙的 Fibonacci 的一些说明
奇妙的 Fibonacci,多次模拟赛中出现 同时也是 BZOJ 2813 一 Fibonacci 的 GCD 如果 \(F\) 是 Fibonacci 数列,那么众所周知的有 \(\gcd(F_i, ...
- fibonacci数列-斐波那契数列-python编程
未完待续~ 了解fibonacci数列: 斐波纳契数列(Fibonacci Sequence),又称黄金分割数列. 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610 ...
- 数学归纳法·Fibonacci数列
数学归纳法 我们先来看一个例子: 我们让多诺米骨牌倒下的充要条件是: 第一块骨牌倒下: 假设当当前块骨牌倒下时,则他的后面一块也会倒下. 我们把这个例子给抽象出来就可以得到数学归纳法的证明过程: [第 ...
- Codeforces 893E Counting Arrays:dp + 线性筛 + 分解质因数 + 组合数结论
题目链接:http://codeforces.com/problemset/problem/893/E 题意: 共q组数据(q <= 10^5),每组数据给定x,y(x,y <= 10^6 ...
- bzoj2693--莫比乌斯反演+积性函数线性筛
推导: 设d=gcd(i,j) 利用莫比乌斯函数的性质 令sum(x,y)=(x*(x+1)/2)*(y*(y+1)/2) 令T=d*t 设f(T)= T可以分块.又由于μ是积性函数,积性函数的约束和 ...
随机推荐
- C++11中lock_guard和unique_lock的区别
c++11中有一个区域锁lock_guard,还有第二个区域锁unique_lock. 区域锁lock_guard使用起来比较简单,除了构造函数外没有其他member function,在整个区域都有 ...
- 刷题向》图论》BZOJ1179 关于tarjan和SPFA的15秒(normal)
这道题可以考察图论的掌握程度(算半道水题) 题目如下 输入 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i ...
- 【HDU3949】XOR
[题目大意] 给定一个数组,求这些数组通过异或能得到的数中的第k小是多少. 传送门:http://vjudge.net/problem/HDU-3949 [题解] 首先高斯消元求出线性基,然后将k按照 ...
- ubuntu下不用eclipse开发cocos2d-x(命令行)
之前在ubuntu下通过eclipse搭建开发cocos2d-x的环境,但是由于eclipse界面在ubuntu显得很丑,在里面写代码,完全没有感觉,后来我转到了win7上通过vs2010和eclip ...
- Luogu 4091 [HEOI2016/TJOI2016]求和
BZOJ 4555 一道模板题. 第二类斯特林数有公式: $$S(n, m) = \frac{1}{m!}\sum_{i = 0}^{m}(-1)^i\binom{m}{i}(m - i)^n$$ 考 ...
- poj1722 SUBTRACT
应该是基础的dp练手题 线性dp最主要的就是关于阶段的划分,这个题中我没想到的一点就是开状态的时候使用了前i个数能合成的数来记录 我自己的想法就是类似于区间dp这样的记录方法,这种方法确实开了很多冗余 ...
- Entity Framework 6.0 Tutorials(4):Database Command Logging
Database Command Logging: In this section, you will learn how to log commands & queries sent to ...
- Entity Framework 6.0 Tutorials(2):Async query and Save
Async query and Save: You can take advantage of asynchronous execution of .Net 4.5 with Entity Frame ...
- Input的size与maxlength属性的区别
最近做项目用到input的size和maxlength属性,以前只顾用没有用心去看看这2个标签的区别,今天周末baidu了一下,有所理解.特记录于此! <p>Name: <inp ...
- servlet模板
package ${enclosing_package};import java.io.IOException;import javax.servlet.ServletException;import ...