題意,給乙個n*n的矩陣a,求a+a^2+a^3+a^4+a^5+a^6+```+a^k, 矩陣對m取mod.
有種東西叫二分- -
if(k&1) 如果k為奇數,我們計算要加上a^k
如果k為偶數,我們直接計算 i+a^(k>>1),其中i是單位矩陣,然後遞迴計算a+a^2+```+a^(k>>1)
至於為什麼呢,你可以把式子(i+a^(k>>1))(a+a^2+```+a^(k>>1))展開還原(偶數情況)
奇數情況需要加上最後一項。
然後遞迴計算+快速冪取模
我過載了矩陣的 *,+,^,然後寫計算前k項和就比較好些。
(一開始樣例都沒過,過載的時候忘記返回了- -||)
初學矩陣的蒟蒻- -
ac**:
#include#include#include#include#include#include#includeusing namespace std;
const int maxn=35;
int n,m,k;
struct mat
}ans;
mat operator+(mat a,mat b)
} return c;
}mat operator*(mat a,mat b)
} }return c;
}mat operator^(mat a,int y)
return c;
}mat s(mat a,int y)
return tmp;
}int main()
ans=s(ans,k);//求和
for(int i=1;i<=n;i++)
}return 0;
}
poj 3233 矩陣快速冪
十個利用矩陣乘法解決的經典題目的最後一題 1a終於刷完十道題了,基本都是乙個思路 二分優化!a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 用二分變成 a 1 a 2 a 3 a 4 a 4 a 1 a 2 a 3 a 4 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a ...
poj 3233 矩陣高速冪
題意 給出乙個公式求這個式子模m的解 分析 本題就是給的矩陣,所以非常顯然是矩陣高速冪,但有一點。本題k的值非常大。所以要用二分求和來降低執行時間。include include include include include include include include include incl...
poj3233(矩陣快速冪)
poj3233 給定n k,m 然後是n n行,我們先可以把式子轉化為遞推的,然後就可以用矩陣來加速計算了。矩陣是加速遞推計算的乙個好工具 我們可以看到,矩陣的每個元素都是乙個矩陣,其實這計算乙個分塊矩陣,我們可以把分塊矩陣展開,它的乘法和普通矩陣的乘法是一樣的。1 include 2 includ...