JZOJ.1240. Fibonacci sequence
2016-07-12 18:31
573 查看
Problem
Solution
矩阵乘法。设有一个矩阵a为[sum,x,y,z],其中sum表示Σni=1F[i]x,y表示F[i−2],F[i−1],z表示F[i]。那么通过一个4*4的矩阵b[1,0,0,0]
[0,0,0,0]
[1,1,0,1]
[1,0,1,1]
相乘变成a[sum’,y,z,new] (显而易见,new=y+z,sum’=sum+y+z)
具体怎么矩阵乘法呢?
首先我们先求出Σyi=1F[i]再求出Σx−1i=1F[i]两者相减即为答案。
我们可以想到矩阵快速幂,将矩阵b变成(矩阵b)y。然后与a相乘。
求(矩阵b)x−1也是如此。
不要忘了%10000。
Code
#include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #define LL long long #define fo(i,a,b) for(i=a;i<=b;i++) #define mo 10000 using namespace std; const LL b[5][5]={{0,0,0,0,0},{0,1,0,0,0},{0,0,0,0,0},{0,1,1,0,1},{0,1,0,1,1}}; const LL h[5][5]={{0,0,0,0,0},{0,1,0,0,0},{0,0,1,0,0},{0,0,0,1,0},{0,0,0,0,1}}; const LL a[5]={0,4,1,1,2}; LL e[5][5],c[5],ans,A1,A2; int i,j,k,l,n,m,T,s,x,y,p; LL jzcf(int x) { int i,j,k,p=x; LL d[5][5],f[5][5],g[5][5],c[5],A1; memcpy(g,b,sizeof(b)); memcpy(d,h,sizeof(h)); while (p>0) { if (p%2==1) { memset(f,0,sizeof(f)); fo(k,1,4) fo(i,1,4) fo(j,1,4) f[i][j]=(f[i][j]+d[i][k]*g[k][j])%mo; memcpy(d,f,sizeof(f)); } memset(f,0,sizeof(f)); fo(k,1,4) fo(i,1,4) fo(j,1,4) f[i][j]=(f[i][j]+g[i][k]*g[k][j])%mo; memcpy(g,f,sizeof(f)); p=p/2; } A1=0; memset(c,0,sizeof(c)); fo(k,1,4) fo(j,1,4) c[j]=(c[j]+a[k]*d[k][j])%mo; A1=c[1]; return A1; } LL res(int x) { LL rs; if (x==0) return 0; if (x==1) return 1; if (x==2) return 2; if (x==3) return 4; rs=jzcf(x-3); return rs; } int main() { scanf("%d",&T); while (T--) { scanf("%d%d",&x,&y); A1=res(y); A2=res(x-1); ans=(A1-A2+mo)%mo; printf("%lld\n",ans); } }
——2016.7.12
相关文章推荐
- 347. Top K Frequent Elements
- easyui datagrid属性和方法
- Longest Ordered Subsequence-POJ2533 <O(nlog(n))算法>
- xUtils的retry error, curr request is null问题
- 关于easyUI分页
- 关于easyUI一些标签的使用
- 关于easyUI
- 关于easyUI的一些js方法
- jsp request 对象详解
- UICollection scrollToItemAtIndexPath: 不工作的问题
- vue.js 列表渲染
- minigui 3.0.12移植
- C 实现ArrayQueue队列
- vue.js 条件渲染
- vue.js Class 与 Style
- vue.js计算属性
- UI里面excel数据上传并解析的例子(XML格式)
- request_mem_region 与 ioremap【转】
- MUI组件三:列表、遮罩蒙版、数字输入框、侧滑导航和弹出菜单
- 内核request_mem_region 和 ioremap的理解【转】