在乙個風和日麗的午後,少佐給薇爾莉特伊芙嘉登安排了乙個任務。
任務大致是這樣的,接下來的一周,薇爾莉特需要照顧 n 只小貓咪。為了方便管理這n 只貓咪,
薇爾莉特準備給每只貓咪取乙個獨一無二的名字。取名字要徵求貓咪本咪的同意才可以。
但這些貓咪都非常有個性,絕不接受很長的名字。
現給出每只貓咪所能容忍名字的長度上限。
請你為所有貓咪取名字,請問共有多少種不同的方案。
名字僅包含小寫英文本母。結果可能非常大,所以請將結果對 77797 取模
如果無方案,請輸出 -1
輸入描述:
第一行,乙個正整數 n 。
第二行, n 個正整數,第 i 個數字 a_iai
,表示第 i 只貓咪所能容忍名字的長度上限,數字間以空格隔開。
輸出描述:
第一行,僅輸出 1 個數,取模後的總方案數 x 。ps:如果無方案,請輸出 -1
示例1輸入複製1
1輸出複製26
說明貓咪的名字可以為 a-z 間的任意乙個字母,所以方案數為 26。
示例2輸入複製1
2輸出複製702
說明樣例 2 中,貓咪的名字的長度可以為 1,也可以為 2。
長度為 1 時,名字可以為 a-z 中任意乙個,方案數 26 種。
長度為 2 時,名字可以為 aa-az, ba-bz ,…,za-zz 中任意乙個,方案數 26×26=676種。
所以總方案數為 26+676=702 種。
示例3輸入複製5
7 5 8 4 3
輸出複製
9416
備註:100%的資料,1 ≤ n ≤ 10^4,1 ≤ a_i ≤ 101≤n≤10
4,1≤ai
≤10
#include
using
namespace std;
typedef
long
long ll;
const ll mod=
77797
;const ll maxn=
1e5+
100;
ll a[maxn]
;ll quick_pow
(ll base,ll pow)
//快速冪
return res;
}ll muti
(ll a,ll b)
//快速乘
return res;
}ll sum
(ll x,ll n)
ans-
=(n-1)
%mod;
ans%
=mod;
return ans;
}int
main()
綜合了快速乘、快速冪
取模方面:
(a+b)%mod=(a%mod+b%mod)%mod;
(a-b)%mod=(a%mod-b%mod)%mod;
(ab)%mod=(a%modb%mod)%mod;
ps:借鑑了其他大佬的**
快速乘 快速冪 取模
快速冪 傳統的求冪演算法時間複雜度非常高 為o 指數n 因為當指數n非常大的時候,需要執行的迴圈操作次數也非常大,而快速冪能幫我們以相對更少的時間算出指數非常大的冪。快速乘加法比乘法快。可以用較多的加法來取代乘法來減少時間複雜度 乘法分配律?見 絕不承認自己懶 include define ll l...
快速冪 快速冪取模
快速冪的思想在於快速求解高冪指數的冪運算 複雜度為o log2n 與樸素運算相比有很大的改進 接下來給出 其中有詳解 include include using namespace std typedef long long ll ll pow1 int a,int b 最常規的方法 將冪指數轉化為...
快速冪 快速冪取模
求x m 一般方法是 xm x xm 1,這樣需要做m次乘法,未免過慢。加速方法有兩種。1.基於當m為偶數時,xm x2 m 2 當m為奇數時,xm x xm 1。顯然當m為偶數時m會減半,當m為奇數時,下次就是偶數。m可以很快收斂到0.表示冪 2.將m看成二進位制串mkmk 1 m1m0,那麼xm...