zoj 3707 Calculate Prime S
fibonacci数列的性质:
1.gcd(fib(n),fib(m))=fib(gcd(n,m))
证明:可以通过反证法先证fibonacci数列的任意相邻两项一定互素,然后可证n>m时gcd(fib(n),fib(m))=gcd(fib(n-m),fib(m)),递归可
求gcd(fib(n),fib(m))=gcd(fib(k),fib(l)),最后k=l,不然继续递归。K是通过展转相减法求出,易证k=gcd(n,m),所以gcd(fib(n),fib(m))
=fib(gcd(n,m))。
2.如果fib(k)能被x整除,则fib(k*i)都可以被x整除。
3.f(0)+f(1)+f(2)+…+f(n)=f(n+2)-1
4.f(1)+f(3)+f(5)+…+f(2n-1)=f(2n)
5.f(2)+f(4)+f(6)+…+f(2n) =f(2n+1)-1
6.[f(0)]^2+[f(1)]^2+…+[f(n)]^2=f(n)·f(n+1)
7.f(0)-f(1)+f(2)-…+(-1)^n·f(n)=(-1)^n·[f(n+1)-f(n)]+1
8.f(n+m)=f(n+1)·f(m)+f(n)*f(m-1)
9.[f(n)]^2=(-1)^(n-1)+f(n-1)·f(n+1)
10.f(2n-1)=[f(n)]^2-[f(n-2)]^2
11.3f(n)=f(n+2)+f(n-2)
12.f(2n-2m-2)[f(2n)+f(2n+2)]=f(2m+2)+f(4n-2m) [ n〉m≥-1,且n≥1]
还有一个结论:
计算(a/b)%c 其中b能整除a
如果b与c互素,则(a/b)%c=a*b^(phi(c)-1)%c
如果b与c不互素,则(a/b)%c=(a%bc)/b
对于b与c互素和不互素都有(a/b)%c=(a%bc)/b成立
附上代码:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;#define LL long long struct matrix{LL f[2][2];
};const int N=16000000;
int prime[16000000];
LL p[13000011];void init(){int i,j;int k=1;memset(prime,0,sizeof(prime));p[0]=1;k=1;for(i=2;i<=N;i++){if(prime[i]==0){p[k++]=i;for(j=2*i;j<=N;j+=i){prime[j]=1;}}}p[1]=3;p[2]=4;
}matrix multi(matrix a,matrix b,int MOD)
{struct matrix c;int i,j,k;for(i=0;i<2;i++){for(j=0;j<2;j++){c.f[i][j]=0;for(k=0;k<2;k++){c.f[i][j]=(c.f[i][j]+(a.f[i][k]*b.f[k][j])%MOD)%MOD;}}}return c;
}matrix quick_pow(int k,int MOD)
{int i;struct matrix s;memset(s.f,0,sizeof(s.f));for(i=0;i<2;i++) s.f[i][i]=1;struct matrix a;a.f[0][0]=1;a.f[0][1]=1;a.f[1][0]=1;a.f[1][1]=0;while(k){if(k&1){s=multi(s,a,MOD);}a=multi(a,a,MOD);k=k>>1;}return s;
}int main(){int i,k,x,m;int t;init();scanf("%d",&t);struct matrix ans;while(t--){scanf("%d%d%d",&k,&x,&m);for(i=p[k];;i++){ans = quick_pow(i-1,x);if(ans.f[0][0]%x==0) break;}ans = quick_pow(i-1,x*m);printf("%lld\n",ans.f[0][0]/x);}return 0;
}
zoj 3707 Calculate Prime S相关推荐
- 线段树 + 矩阵 --- ZOJ 3772 Calculate the Function
Calculate the Function Problem's Link: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCod ...
- NOIP 好题推荐(DP+搜索+图论)POJ ZOJ
NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS) 1090 Chain ->格雷码和二进制码 ...
- fibonacci数列的性质(ZOJ3707)
题目:Calculate Prime S 题意: Define S[n] as the number of subsets of {1, 2, ...,n} that contain no con ...
- python求素数算法_Python程序最多可计算n个质数(使用不同算法)
python求素数算法 There are various methods through which we can calculate prime numbers upto n. 我们可以通过多种方 ...
- ZOJ 3988 2017CCPC秦皇岛 H:Prime Set(二分匹配)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3988 题意: 给你n个数,如果{i, j}满足i!=j & ...
- POJ ZOJ题目分类
POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...
- POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)
水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法: (1)枚举 (1753,2965) (2)贪心(13 ...
- ZOJ 2723 Semi-Prime ||ZOJ 2060 Fibonacci Again 水水水!
两题水题: 1.如果一个数能被分解为两个素数的乘积,则称为Semi-Prime,给你一个数,让你判断是不是Semi-Prime数. 2.定义F(0) = 7, F(1) = 11, F(n) = F( ...
- 【HDU/POJ/ZOJ】Calling Extraterrestrial Intelligence Again (素数打表模板)
http://poj.org/problem?id=1411 POJ http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=168 ...
最新文章
- 浅析CSS——元素重叠及position定位的z-index顺序
- mysql from_unixtime_MySQL 数据库中日期与时间函数 FROM_UNIXTIME(), UNIX_TIME() ...
- 浅谈MD5加密算法中的加盐值(SALT)
- 国外学校css profile,CSS Print Profile
- python 多个列表合并_Python对两个有序列表进行合并和排序的例子
- MTU MSS 详解记录
- linux脚本实现多重管道,制作Linux shell时流重定向和管道
- 【机器学习-西瓜书】八、集成学习:结合策略;多样性;总结
- CCCC-GPLT L2-019. 悄悄关注 团体程序设计天梯赛
- verilog实现四位全加器(基于一位全加器)
- BP神经网络做数据预测
- vue省市区三级联动(行政区划代码)
- 2019最新IDEA Java教学视频课程资料
- 鸡啄米:C++编程入门系列之四(数据类型)
- linux显卡用amd还是NVIDIA,Linux NVIDIA显卡驱动年度横评,不同于AMD,NVI
- P28 Elastic Beanstalk
- python 使用cv2、io.BytesIO处理图片二进制数据
- Excel: vlookup函数简介、使用注意事项及查找结果显示#N/A的解决方法
- 《Generating Question Relevant Captions to Aid Visual Question Answering》(生成问题相关标题,以帮助视觉回答问题)论文解读
- 作文指导百法·9.从阅读中积累素材