第一行輸入乙個t,(1≤t≤105) 表示有t次詢問。
每次詢問有乙個整數 n , 表示乙個集合 1,2,3,...... n
問:這個集合中有幾個非空子集,這個子集的所有元素和是偶數。
輸出:滿足條件的子集的個數對1000000007 取模。
1.任意個偶數的和是偶數
2.偶數個奇數的和是偶數
3.任意個偶數+偶數個奇數的和是偶數
對於集合 ,設偶數有 a 個,奇數有 b 個。 所以下面公式把所有情況都包括了:
把上面公式化簡後是
然後要減去0個偶數0個奇數的情況
就是答案。
因為n很大, 所以要用到快速冪演算法
雖然有取模運算,但是中間的過程還是會超int,所以要用long long
下面是**:
#include #include using namespace std;
typedef long long ll ;
const int m = 1000000007;
const int n = 1e5;
int a[n + 1];
ll pow(int a, int b)
return ans;
}int main()
return 0;
}
hdu 5106 同餘定理 組合數學 快速冪
首先要取模,就要用到同餘模定理,具體不細講,只是在中間過程取模,防止溢位 在統計時考慮,逐位進行,因為不考慮數本身,所以每當遇到1時,考慮後面還需要n個 還剩多少m位,所以就有c m,n 個數,因為這些數的字首相同,所以最終結果可以通過字首 個數獲得這部分的和,然後考慮每個位上是 的情況是c m 1...
hdu 4565 推倒公式 矩陣快速冪
求下式的值 sn a b n m 其中 0 m 215 0n 231 a 1 2 b令 a n a b n b n a b n c n an bn 因為 a 1 2 b所以 0 b 1 所以 0 a b n 1 即 bn 1 也就是說,cn an sn cn 因此,求cn 就行了。cn 兩邊同時乘以...
bzoj1008越獄 組合數學 快速冪
problem 1008.hnoi2008 越獄 time limit 1 sec memory limit 162 mb submit 11735 solved 5087 submit status discuss 監獄有連續編號為1 n的n個房間,每個房間關押乙個犯人,有m種宗教,每個犯人可能信...