[LUOGU]4932 浏览器

(\_\_stdcall)大佬出的题(Orz)
我们惊奇地发现,加入(\_\_popcount(x))(\_\_popcount(y))的奇偶数性相同,那么(\_\_popcount(x xor y))一定是偶数。
因为假如(x),(y)(i)位相同,那么(\_\_popcount(x xor y)=\_\_popcount(x)+\_\_popcount(y)-i×2),一定是偶数。
否则就是奇数。
然后统计一下奇数偶数的个数乘一下就行了。
理论上是过不了的,但是由于数据随机构造,轻易水过去了。。。

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
unsigned long long a,b,c,d,x;
int cnt[2],n;
int main() {
    cin>>n>>a>>b>>c>>d>>x;
    for(int i=1;i<=n;i++) 
        x=(((a*x+b)%d)*x+c)%d,cnt[__builtin_popcount(x)&1]++;
    cout<<1ll*cnt[0]*cnt[1];
    return 0;
}
原文地址:https://www.cnblogs.com/sdfzhsz/p/9829284.html