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...