矩阵基础1008 UVA 11885
来源:互联网 发布:js与java aes 编辑:程序博客网 时间:2024/05/16 05:19
题意:
给出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 5const 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;}
0 0
- 矩阵基础1008 UVA 11885
- 矩阵基础1007 UVA 11149
- 矩阵基础1010 UVA 11651 矩阵快速幂+DP 好题,推荐
- 矩阵基础
- 矩阵基础
- 基础矩阵
- uva 11464 偶数矩阵
- 矩阵 uva 12037
- UVA 矩阵链乘
- UVA - 10870(构造矩阵)
- Uva Recurrences 矩阵优化
- UVA 11464 偶数矩阵
- uva 10870 矩阵
- UVA 684 (矩阵行列式)
- 数论基础:矩阵快速幂解斐波那契数列Yet another Number Sequence(UVA)
- uva 11885 - Number of Battlefields(矩阵快速幂)
- 基础矩阵与本质矩阵
- 本质矩阵和基础矩阵
- 事件监听一
- java使double保留两位小数的多方法 java保留两位小数
- msg_ptr in mq_timedsend
- [leetcode] 160. Intersection of Two Linked Lists
- 我的第一篇博客
- 矩阵基础1008 UVA 11885
- CentOS7 安装mysql
- SQL中Group By的使用
- perl 自动发产品
- 矩阵基础1009 CodeForces 392C 好题,超级推荐
- 2002 计算球体积
- CodeForces 385E
- PAT 1086
- 嵌入式常用算法:时间触发下的嵌入式软件设计模式