簡單瞎搞題
不會用bitset,所以沒做出來。實際上還是比較簡單的。
#include
using
namespace
std;
bitset
<1000005>dp[2];
int main()
cout
<2].count()《簡單資料結構1
這裡要運用拓展尤拉定理。 ab
modp
=ab%
φ(p)
+(b≥
φ(p)
?φ(p
):0)
modp
a bm
odp=
ab%φ
(p)+
(b≥φ
(p)?
φ(p)
:0)m
od
p實際上看到這個等式時,我想寫遞迴但寫不出來。。因為這個等式並不是遞迴的形式。。
所以我看別人的題解,實際上我們定義上面式子重新定義乙個fmod(x,p)=x%p+x>=p?x:0
這個mod和原來的mod實際上就是可能多個模數,但是我們再模一次就能消除影響了。既然用這個mod那麼原來的式子就能寫成ab
fmod
p=ab
fmod
φ(p)
fmod
p abf
modp
=abf
modφ
(p)f
modp
,現在就是遞迴形式啦,當我們計算時需要用到快速冪,而快速冪的模也可以用同樣的方式,仔細想想就會明白沒有任何影響。
在最後的答案需要再模p一下。
區間修改單點查詢用樹狀陣列就完事了。
#include
using
namespace
std;
#define lowbit(x) x&(-x)
const
int maxn=5e5+5;
int phi[20000005];
void init(int n)
}int a[maxn];
long
long sum[maxn];
void add(int x,int num)
return res;
}int
fmod(long
long a,int p)
int quick_mul(int a,int num,int p)
return res;
}int q(int l,int r,int p)
int main()
else
printf("%d\n",q(l,r,p)%p);
}return
0;}
牛客老是打不好,還是得多補題啊。 牛客練習賽 22 A
給6個火柴棍,問能不能拼成 熊 或者 象 熊 4根棍子長度一樣,另外2根棍子長度不一樣 象 4根棍子長度一樣,另外2根棍子長度一樣。如果可以拼出熊,輸出 bear 如果可以拼出象,輸出 elephant 如果都不可以拼出,輸出 hernia 一行六個數表示每個火柴棍的長度輸出一行乙個字串表示答案示例...
題解 牛客練習賽51
字首a的數量,字尾c的數量,遇到b就計算一次答案。includeusing namespace std typedef long long ll const int n 1e5 100 char s n int cnt n int main int tmp 0 for int i 1 i n i p...
牛客練習賽64 題解
a 怪盜 1412題目描述 乙個長度為n m k包含n個數字1,m個數字2和k個數字4的陣列,最多可能有多少個子序列1412?如果乙個序列是陣列的子串行,當且僅當這個序列可以由陣列刪去任意個元素,再將陣列中的剩餘元素按順序排列而成。思路 將序列排列成111444441111222222,這樣可以得到...