HDU - 2276 Kiki & Little Kiki 2 矩阵快速幂
来源:互联网 发布:互联网金融矩阵 编辑:程序博客网 时间:2024/06/10 03:55
题目大意:给出一个由0,1组成的字符串,每一秒的时候,如果该位字符左边是1的话,那么该字符就要变换(由0变1,或者由1变0,第一个的左边是最后一个),问M秒后这个字符串的状态
解题思路:用0,1矩阵来表示变化,具体的请看代码,现在没法给出矩阵,后面会补的
#include<cstdio>#include<cstring>const int N = 110;char str[N];struct Matrix{ int mat[N][N];}A, B, tmp;int n, len, m;int num[N], ans[N];void init() { for(int i = 0; i < len; i++) for(int j = 0; j < len; j++) { A.mat[i][j] = B.mat[i][j] = 0; if(i == j) B.mat[i][j] = A.mat[i][j] = 1; } A.mat[len-1][0] = 1; for(int i = 0; i < len; i++) { if(i) A.mat[i-1][i] = 1; num[i] = str[i] - '0'; }}Matrix matMul(Matrix x, Matrix y) { for(int i = 0; i < len; i++) for(int j = 0; j < len; j++) { tmp.mat[i][j] = 0; for(int k = 0; k < len; k++) tmp.mat[i][j] += (x.mat[i][k] * y.mat[k][j] ) % 2; tmp.mat[i][j] %= 2; } return tmp;}void solve() { while(n) { if(n & 1) B = matMul(B,A); A = matMul(A,A); n >>= 1; }}int main() { while(scanf("%d", &n) != EOF) { getchar(); scanf("%s", str); len = strlen(str); if(n == 0) { for(int i = 0; i < len; i++) printf("%c", str[i]); printf("\n"); continue; } init(); solve(); for(int i = 0; i < len; i++) { int tmp = 0; for(int j = 0; j < len; j++) { tmp += (num[j] * B.mat[j][i]) % 2; } ans[i] = tmp % 2; } for(int i = 0; i < len; i++) printf("%d", ans[i]); printf("\n"); } return 0;}
0 0
- hdu 2276 Kiki & Little Kiki 2(矩阵快速幂)
- HDU 2276 Kiki & Little Kiki 2 矩阵快速幂
- HDU 2276 Kiki & Little Kiki 2(矩阵快速幂)
- hdu 2276 Kiki & Little Kiki 2 (矩阵快速幂)
- HDU - 2276 Kiki & Little Kiki 2 矩阵快速幂
- HDU 2276 Kiki & Little Kiki 2(矩阵快速幂)
- hdu 2276 Kiki & Little Kiki 2矩阵快速幂
- HDU 2276 Kiki & Little Kiki 2 (矩阵快速幂)
- hdu 2276 Kiki & Little Kiki 2 矩阵快速幂
- hdoj 2276 Kiki & Little Kiki 2【矩阵快速幂】
- HDU 2276 Kiki & Little Kiki 2 (位运算+矩阵快速幂)
- Hdu 2276 && Nyoj 300 Kiki & Little Kiki 2[矩阵快速幂]
- NYOJ 300 && hdu 2276 Kiki & Little Kiki 2 (矩阵快速幂)
- HDU 2276-Kiki & Little Kiki 2(矩阵快速幂+位运算)
- hdu 2276 Kiki & Little Kiki 2 矩阵/循环矩阵
- HDU2276 - Kiki & Little Kiki 2(矩阵快速幂)
- nyoj--300 Kiki & Little Kiki 2(矩阵快速幂)
- HDU2276 Kiki & Little Kiki 2 矩阵快速幂
- SQuirreL SQL Client使用入门2---插件使用
- ARP攻击与检测
- JS创建对象的模式介绍
- Linux 查找某天的文件并打包
- 安卓xml存放图片,在代码中取出
- HDU - 2276 Kiki & Little Kiki 2 矩阵快速幂
- java基础整理の函数重载和重写
- 01线程是一个程序里不同的执行路径
- JS 给某个对象添加专属方法
- TCP/IP-----区别、缓存、流量控制、拥塞控制
- unity3d 在shader中创建及使用Texture3D
- word公式居中标号右对齐编辑方法
- HDU4349 Xiao Ming's Hope Lucas定理
- 大话设计模式--笔记