矩阵基础1008 UVA 11885
2016-07-27 12:41
253 查看
题意:
给出p,求出最小包围的矩形的周长为p的形状的个数,不包括矩形
思路:
发现如果包括矩形的话,这个个数就是一个斐波那契序列
然后就先求出来包括矩形的,然后再减去就行了
给出p,求出最小包围的矩形的周长为p的形状的个数,不包括矩形
思路:
发现如果包括矩形的话,这个个数就是一个斐波那契序列
然后就先求出来包括矩形的,然后再减去就行了
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<math.h> #include<queue> #include<stack> #include<string> #include<vector> #include<map> #include<set> using namespace std; #define lowbit(x) (x&(-x)) typedef long long LL; const int maxn = 100005; const int inf=(1<<28)-1; #define Matrix_Size 5 const LL MOD = 987654321; int Size; struct Matrix { LL mat[Matrix_Size][Matrix_Size]; void clear() { memset(mat,0,sizeof(mat)); } void output() { for(int i = 0;i < Size;i++) { for(int j = 0;j < Size;j++) printf("%lld ",mat[i][j]); printf("\n"); } } Matrix operator *(const Matrix &b)const { Matrix ret; for(int i = 0;i < Size;i++) for(int j = 0;j < Size;j++) { ret.mat[i][j] = 0; for(int k = 0;k < Size;k++) { long long tmp = (long long)mat[i][k]*b.mat[k][j]%MOD; ret.mat[i][j] = (ret.mat[i][j]+tmp); if(ret.mat[i][j]>=MOD) ret.mat[i][j] -= MOD; if(ret.mat[i][j]<0)//注意是否需要MOD ret.mat[i][j] += MOD; } } return ret; } }; Matrix pow_M(Matrix a,long long n) { Matrix ret; ret.clear(); for(int i = 0;i < Size;i++) ret.mat[i][i] = 1; Matrix tmp = a; while(n) { if(n&1)ret = ret*tmp; tmp = tmp*tmp; n>>=1; } return ret; } int main() { LL n; while(~scanf("%lld",&n)&&n) { if(n&1||n<=6) { printf("0\n"); continue; } Size=2; Matrix A,B; A.clear(),B.clear(); A.mat[0][0]=A.mat[0][1]=1; A.mat[1][0]=1; B.mat[0][0]=1;B.mat[1][0]=1; A=pow_M(A,n-5); //A.output(); A=A*B; int Ans=A.mat[0][0]; //A.output(); n/=2; if(n%2==0) Ans=(Ans+1)%MOD; Ans=(Ans-n/2*2+MOD)%MOD; printf("%d\n",Ans); } return 0; }
相关文章推荐
- 我的第一篇博客
- 事件监听一
- django 快速实现完整登录系统(cookie)
- perl 自动发产品
- perl 自动发产品
- java使double保留两位小数的多方法 java保留两位小数
- 救济金发放 (The Dole QUEUE UVa 133)
- 矩阵基础1007 UVA 11149
- Spring MVC异常处理
- Google protocol buffer的配置和使用(Linux&&Windows)
- C#工作笔记
- Java设计模式透析之 —— 单例(Singleton)
- 射频全网通笔记(附全球频段划分及主要运营商对应表)
- 矩阵基础1006 HDU 4549
- 从头学android_alertDialog的使用
- CSU 1723: 想打架吗?算我一个!所有人,都过来!
- 射频全网通笔记(附全球频段划分及主要运营商对应表)
- 从零开始的Android新项目9 - 前端用后台接口设计
- mysql 优化
- 助词复习—1