快速冪求取演算法模板

2021-09-25 03:46:54 字數 1262 閱讀 2299

s - a sequence of numbers

這道題的大意就是說給你乙個序列 已知序列中的前三個數 a1,a2,a3 讓你求出這個序列中的第k個數

剛開始我以為是對每一組測試樣例找規律 結果又仔細讀了一遍題 才發現這個序列是算術序列或者幾何序列(也就是等差和等比) 而等比就要使用到快速冪了

以下是 快速冪的模板

//求a^n 例如2^5  5的二進位制為101  1*2*(2*2)^2

long long quick(long long a,long long n)

n>>=1;

s=s*s;

}return res;

}

該題剛一開始提交了很多遍都是wa 實在是沒有想清楚**有錯 結果讓大佬幫我看了看 發現是沒有注意到快速冪的時候就要取餘 並且在主函式當中判斷是否為等比數列的時候不能除零 這個是ac的**

#include#define x 200907

long long quick(long long a,long long n)

n>>=1;

s=(s*s)%x;

}return res;

}int main()

else if(a1==0&&a2==0)

printf("0\n");

else if(a2/a1==a3/a2)

printf("%lld\n",ans);

}return 0;

}

[矩陣乘冪]自己寫的不是很好 我參考學校大佬中的部落格 特別好 不懂得可以去看看他的(

又遇到乙個求取矩陣的冪次方的題目其實和乙個數的快速冪差不多 只不過我們要把矩陣看成底數 可矩陣與矩陣的乘法和數與數的乘法是不一樣的 以下是求取矩陣快速冪的方法

#include#define p 10000

struct stt

;stt res,e,x;//res是存放乘冪後的矩陣 e是單位矩陣

int i,j,k;

void init()

//若是m*n的矩陣 則是n*n

stt mult(stt a,stt b)//矩陣x與矩陣y相乘

}return c;

}void quick(long long n)//求取矩陣的n次方冪

for(i=0;ifor(j=0;jprintf("%lld%c",res.m[i][j],j}int main()

return 0;

}

模板 快速冪

1.萌新的話 快速冪主要是用來解決一些超時間複雜度的冪運算。其主要思想是根據乙個結論 2 n 4 n 2 這樣原本暴力的o n 演算法優化為了o logn 的演算法了。時間複雜度 2.include include include include include using namespace st...

快速冪(模板)

對於任何乙個整數的模冪運算 a b c 對於b我們可以拆成二進位制的形式 b b0 b1 2 b2 2 2 bn 2 n 這裡我們的b0對應的是b二進位制的第一位 那麼我們的a b運算就可以拆解成 a b0 a b1 2 a bn 2 n 對於b來說,二進位制位不是0就是1,那麼對於bx為0的項我們...

快速冪(模板)

快速冪原理就是將emm 比如求n的m次方nm那麼就將m轉化為2進製數 對每一位進行判斷,如果當前位數為1就進行一次乘法,同時每次判斷後的乘數為n的當前判斷的m的位數的冪。假設當前已經判斷到2進製下m的第k位位數上為一那麼乘上nk。好懂 include define ll long long usin...