2分法求 2^n 和 矩阵的n次方
来源:互联网 发布:淘宝草稿箱在哪里找 编辑:程序博客网 时间:2024/05/17 03:15
#include "stdafx.h"#include <iostream>using namespace std;//a^nint f(int a, int n){if(n == 0) return 1;if(n == 1) return a;int ans = f(a,n/2);if(n&1){return ans*ans*a;}elsereturn ans*ans;}int main(){cout<<f(2,5)<<endl;return 0;}//2分法求矩阵冥次#include "stdafx.h"#include <iostream>#include <algorithm>using namespace std;//如果矩阵过大或者冥过多都会造成栈溢出const int MAXN = 30;typedef struct Matrix{int s[MAXN][MAXN];}M;int n;//a*bM Multiply(M a, M b){M c;memset(c.s,0,sizeof(c.s));for(int i=1; i<=n; i++){for(int j=1; j<=n; j++){for(int k=1; k<=n; k++){c.s[i][j] += a.s[i][k] * b.s[k][j];}}}return c;}//a^tM Pow(M a, int t){M b;if(t == 0){memset(b.s,0,sizeof(b.s));for(int i=1; i<=n; i++){b.s[i][i] = 1;}return b;}else{M k = Pow(a,t/2);if(t&1) //t为奇数{return Multiply(Multiply(k,k),a);}else{return Multiply(k,k);}}}int main(){M a;int t;cin>>n>>t;for(int i=1; i<=n; i++){for(int j=1; j<=n; j++){cin>>a.s[i][j];}}M b = Pow(a,t);for(int i=1; i<=n; i++){for(int j=1; j<=n; j++){cout<<b.s[i][j]<<" ";}cout<<endl;}return 0;}
- 2分法求 2^n 和 矩阵的n次方
- 2分法求 2^n 和 矩阵的n次方 转:http://blog.csdn.net/maiyuetong/article/details/6762206
- 2的N次方
- 2的N次方
- 2的N次方
- 2的n次方
- 2的n次方
- 2的n次方
- 2^N-2的N次方
- 【高精度】2的n次方
- ACM 2的N次方
- 计算2的n次方
- 计算2的N次方
- 判断n是否是N的整数次方(N是2的N次方)
- N的N次方
- N的N次方
- N的N次方
- N的N次方
- 获取XML字符串,获取XML架构字符串
- 数据库操作之基础篇
- C#类的修饰符
- XML-RPC规范中文版
- POJ 2240 Arbitrage Floyd
- 2分法求 2^n 和 矩阵的n次方
- 使用 XML-RPC 为 C++ 应用程序启用 Web 服务
- POJ 1125 Stockbroker Grapevine Floyd
- 数据库操作之提升篇
- POSIX线程专有数据的空间释放问题,pthread_key_create……(
- 浅谈公司文化与ERP(一)
- 数据库操作之技巧篇
- @package Instance Variables
- silverlight 学习笔记 (六): MVVM Light Toolkits 之 Messager