有n個整數,問從他們中取出若干個數字相與之後結果是0的有多少組。
答案比較大,輸出對於 1,000,000,007 (1e9+7)取模後的結果。
input
第一行輸入乙個整數n。(1<=n<=1,000,000).
第二行有n個整數a[0],a[1],a[2],…a[n-1],以空格分開.(0<=a[i]<=1,000,000)
output
對於每一組資料,輸出乙個整數。
input示例
3 2 3 3
4 0 1 2 3
output示例
0 10
題解 **
#include
#define mod 1000000007
#define inf 1000000005
#define pa pair
typedef
long
long ll;
using
namespace
std;
inline
int read()
while (ch>='0'&&ch<='9')
return x*f;
}int n,dp[1000005],ans,fac[1000005];
bool g[1000005];
int main()
for (int j=20;j>=0;j--)
for (int i=1000000;i>=0;i--)
if (i&(1
<1
<0]]-1;
for (int i=1;i<=1000000;i++)
printf("%d",(ans+mod)%mod);
return
0;}
容斥 51nod 1407 與與與與
這道題的方向不是o n o n o n 而是 o v o v o v 我們發現答案為 全集 an d mathrm and 有至少 1 11 位 0 00 的 an d mathrm and 後有至少 2 22 位 0 00 的 因此我們可以根據乙個數字 and mathrm and 操作後的位數來...
51nod1407 與與與與 容斥 DP
有n個整數,問從他們中取出若干個數字相與之後結果是0的有多少組。答案比較大,輸出對於 1,000,000,007 1e9 7 取模後的結果。n 1 06ai 106 n le10 6 a i le10 6 n 106a i 1 06很容易想到設f i 表示至少i個位置不為0的答案,我們容斥一下就能得...
與 , 與 , 與 的區別
首先 和 稱為布林運算子,和 稱為條件布林運算子。兩種運算子得到的結果完全相同,但得到結果的方式又乙個重要區別 條件布林運算子效能比較好。他檢查第乙個運算元的值,再根據該運算元的值進行操作,可能根本就不處理第二個運算元。如果 運算子的第乙個運算元是false,就不需要考慮第二個運算元的值了,因為無論...