題意:
給乙個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 ...