比赛 2026.5.30 评测结果 AAAAAAAAWEWEEEEEEEEE
题目名称 水母序列 最终得分 40
用户昵称 xuyuqing 运行时间 5.082 s
代码语言 C++ 内存使用 12.38 MiB
提交时间 2026-05-30 11:20:13
显示代码纯文本

#include <cstdio>
#include <iostream>

using namespace std;

const int N = 1010;
const int Maxn = (1 << 20) + 10;

bool flag[Maxn];

int n;
int m;
int nums[N];
long long cal[N][N];
long long sums[N][N];

int main () {
    
    freopen ("Jelly.in", "r", stdin);
    freopen ("Jelly.out", "w", stdout);
    
    flag[0] = flag[1] = true;
    for (int i = 2; i < Maxn; i++) {
        if (!flag[i]) {
            for (int j = i + i; j < Maxn; j += i) {
                flag[j] = true;
            }
        }
    }
    
    scanf ("%d%d", &n, &m);
    for (int i = 1; i <= n; i++) {
        scanf ("%d", &(nums[i]));
    }
    for (int i = 1; i <= n; i++) {
        int now = 0;
        for (int j = 1; j <= n; j++) {
            if (j >= i) {
                now |= nums[j];
            }
            
            cal[i][j] = cal[i][j - 1] + (!flag[now]);
            sums[i][j] = sums[i - 1][j] + cal[i][j];
        }
    }
    for (int i = 1; i <= m; i++) {
        int l, r;
        scanf ("%d%d", &l, &r);
        
        long long res = 0;
//        for (int j = l; j <= r; j++) {
//            res += cal[j][r];
//        }
        res = sums[r][r] - sums[l - 1][r];
        
        printf ("%lld\n", res);
    }
    
    return 0;
}