FZU 1911 矩陣快速冪

2021-07-15 17:16:00 字數 1305 閱讀 6355

題意:

給乙個n,讓你輸出乙個s(n)*s(n)的矩陣

s(n)是前n項斐波那契的和%m

這個矩陣必須滿足每一行和每一列中任意兩個的和不能相等

思路:

奇數肯定是無解的,因為奇數總有一行是相同的

偶數的情況,自己打個6*6和4*4的表就看出來規律了

就是把整個矩形分成三部分,左上部分和右下部分和從右上角到左下角的分界線

然後發現左上部分全是1,右下部分全是-1,分界線前n/2個是0,剩下是1就可以滿足了

我們會發現每一列的和如果》0就是偶數,否則是奇數

每一列如果》0就是奇數,否則是偶數

另外:

我如果把ll n放到int main裡就wa了,放到全域性就ac了,這是什麼鬼情況?

玄學?

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

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 5

ll mod;

int size;

struct matrix

void output()

}matrix operator *(const matrix &b)const

}return ret;

}};matrix pow_m(matrix a,long

long n)

return ret;

}ll get_row(ll n)

int map[205][205];

ll n;

int main()

else

printf("yes\n");

memset(map,-1,sizeof(map));

for(int i=1;i<=n;++i)

for(int i=1;i<=n;++i)

printf("\n");}}

return

0;}

FZU 1911 矩陣快速冪

題意 f n 為斐波那契數列,s n 為其字首和,給你n,m,求s n m的值作為矩陣邊長,構造矩陣行和列的值都不相等 思路 強行把兩道題湊成一道題 求斐波那契字首和 矩陣快速冪 具體構造矩陣看 構造方法 四個角放好,然後水平,豎直放.具體看 懶得寫 include include include ...

快速冪(矩陣快速冪)

求 3 0 3 1 3 n mod 1000000007 input 輸入乙個數n 0 n 10 9 output 輸出 計算結果 sample input 3sample output 40 分析 利用等比數列的求和公式得所求和是 3 n 1 1 2,如果暴力求3 n 1 會超時,這裡引入快速冪來...

快速冪 矩陣快速冪

快速冪 正常情況下求乙個數的冪時間複雜度為o n 而快速冪能把時間複雜度降到o logn 舉個例子 求5的13次方 思想首先把13化為二進位制 1101,即13 1101 8 1 4 1 2 0 1 1 即5 13 58 1 54 1 52 0 5 1 15 5 8 1 5 4 1 5 2 0 5 ...