给定大小为n的数组a,集合S包含a中所有元素,并且设x是S中的元素,那么y = 2 * x + 1, z = 4 * x都是S中的元素,求小于2^p的S的元素有多少个(mod 1e9 + 7)

题目

思路:

给定大小为n的数组a,集合S包含a中所有元素,并且设x是S中的元素,那么y = 2 * x + 1, z = 4 * x都是S中的元素,求小于2^p的S的元素有多少个(mod 1e9 + 7)_第1张图片

给定大小为n的数组a,集合S包含a中所有元素,并且设x是S中的元素,那么y = 2 * x + 1, z = 4 * x都是S中的元素,求小于2^p的S的元素有多少个(mod 1e9 + 7)_第2张图片

#include 
using namespace std;
#define int long long
#define pb push_back
const int maxn = 1e6 + 5, inf = 1e9 + 5, maxm = 1e6 + 5, mod = 1e9 + 7;
int a[maxn], b[maxn], c[maxn];
int n, m;
map mp;
// bool vis[maxn];
struct Node{
    int id, val;
}suf_mx[maxn], suf_mn[maxn];

int f[maxn];
set S;
bool check(int x){
    while(x){
        if(S.count(x)) return 0;
        if(x & 1){
            x = (x - 1) / 2;
        }
        else if(x % 4 == 0){
            x /= 4;
     

你可能感兴趣的:(codeforces,算法)