博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2276 Kiki & Little Kiki 2
阅读量:7034 次
发布时间:2019-06-28

本文共 2574 字,大约阅读时间需要 8 分钟。

  还是矩阵快速幂的题,将异或的操作转换成矩阵乘法。1y!

代码如下:

View Code
1 #include 
2 #include
3 #include
4 #include
5 6 using namespace std; 7 8 const int maxSize = 100; 9 const int initMod = 1E9 + 7; 10 int curSize = maxSize; 11 int curMod = initMod; 12 13 struct Matrix { 14 int val[maxSize][maxSize]; 15 16 Matrix(bool ONE = false) { 17 for (int i = 0; i < curSize; i++) { 18 for (int j = 0; j < curSize; j++) { 19 val[i][j] = 0; 20 } 21 if (ONE) val[i][i] = 1; 22 } 23 } 24 25 void print(int _l = curSize, int _w = curSize) { 26 for (int i = 0; i < _l; i++) { 27 for (int j = 0; j < _w; j++) { 28 if (j) putchar(' '); 29 printf("%d", val[i][j]); 30 } 31 puts(""); 32 } 33 puts("~~"); 34 } 35 }; 36 37 Matrix operator * (Matrix &_a, Matrix &_b) { 38 Matrix ret = Matrix(); 39 40 for (int i = 0; i < curSize; i++) { 41 for (int k = 0; k < curSize; k++) { 42 if (_a.val[i][k]) { 43 for (int j = 0; j < curSize; j++) { 44 ret.val[i][j] += _a.val[i][k] * _b.val[k][j]; 45 ret.val[i][j] %= curMod; 46 } 47 } 48 } 49 } 50 51 return ret; 52 } 53 54 Matrix operator ^ (Matrix &_a, int _p) { 55 Matrix __a = _a, ret = Matrix(true); 56 57 while (_p) { 58 if (_p & 1) { 59 ret = ret * __a; 60 } 61 __a = __a * __a; 62 _p >>= 1; 63 } 64 65 return ret; 66 } 67 68 char *deal(int n) { 69 char *buf = new char[101]; 70 int p = 0; 71 72 scanf("%s", buf); 73 curSize = strlen(buf); 74 75 Matrix Base = Matrix(), op = Matrix(true); 76 77 while (buf[p]) { 78 Base.val[0][p] = buf[p] - '0'; 79 p++; 80 } 81 for (int i = 1; i < curSize; i++) { 82 op.val[i - 1][i] = 1; 83 } 84 op.val[curSize - 1][0] = 1; 85 // op.print(); 86 87 op = op ^ n; 88 Base = Base * op; 89 90 p = 0; 91 while (buf[p]) { 92 buf[p] = Base.val[0][p] + '0'; 93 p++; 94 } 95 96 return buf; 97 } 98 99 int main() {100 int n;101 102 curMod = 2;103 while (~scanf("%d", &n)) {104 printf("%s\n", deal(n));105 }106 107 return 0;108 }

 

——written by Lyon

转载于:https://www.cnblogs.com/LyonLys/archive/2012/10/01/hdu_2276_Lyon.html

你可能感兴趣的文章
看“风水反转”技术如何危害云安全
查看>>
密码重用的危害及规避方法
查看>>
致25岁的你:看看这些IT大佬 你还会放弃你的梦想吗
查看>>
英国发明睡眠传感器,助力改善睡眠质量
查看>>
传统家电品牌布局高端智能家居
查看>>
Ponemon Institute告诉你,大数据正在勾搭网络安全
查看>>
使用Jazz Automation编写自动化测试
查看>>
松下要造懒人必备智能家居:用平板指挥微波炉
查看>>
Colt进行网络升级 提供100Gbps光纤服务
查看>>
Php常用代码数据库的连接及读取和写入
查看>>
《响应式Web设计:HTML5和CSS3实践指南》——1.5节基于媒介查询的图像缩放
查看>>
Li-Fi无线技术揭秘:Wi-Fi的补充而非替代
查看>>
C Primer Plus 第6版 编程练习 2.12 答案
查看>>
有线电视的用户信息,成为美国黑客的新目标
查看>>
物联网智慧社区 衣食住行全智能
查看>>
高性能的Python扩展:第一部分
查看>>
Qt Linguist介绍
查看>>
Qt Creator快捷键
查看>>
《C语言解惑》—— 2.2 printf输出整数或字符
查看>>
为什么在 Redis 实现 Lua 脚本事务?
查看>>