比赛 期末考试0 评测结果 ATTTTTTTEE
题目名称 我能在摸鱼被发现的情况下躲避教练的视奸吗 最终得分 10
用户昵称 ychyyx 运行时间 22.731 s
代码语言 C++ 内存使用 37.85 MiB
提交时间 2026-02-07 10:24:20
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int n,m;
int a[500005][20],b[500005][20],c[500005][20];
const long long P=4294967296;
long long ans,sum;
int ka,kb,kc;
int l,r;
int gcd(int a,int b){
    if(b==0)    return a;
    return gcd(b,a%b);
}
long long ac(int l,int r){
    ka=kb=kc=0;
    for(int j=19;j>=0;j--){
        if(l+(1<<j)-1<=r){
            if(ka==kb&&kb==kc&&kc==0){
                ka=a[l][j];
                kb=b[l][j];
                kc=c[l][j];
            }else{
                ka&=a[l][j];
                kb|=b[l][j];
                kc=gcd(kc,c[l][j]);
            }
            l+=(1<<j);
        }  
    }
    return ka*kb*kc%P;
}
int main(){
    freopen("shijian.in","r",stdin);
    freopen("shijian.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i][0]);
    for(int i=1;i<=n;i++)
        scanf("%d",&b[i][0]);
    for(int i=1;i<=n;i++)
        scanf("%d",&c[i][0]);
    for(int j=1;1<<j<=n;j++){
        for(int i=1;i<=n;i++){
            a[i][j]=a[i][j-1]&a[i+(1<<(j-1))][j-1];
            b[i][j]=b[i][j-1]|b[i+(1<<(j-1))][j-1];
            c[i][j]=gcd(c[i][j-1],c[i+(1<<(j-1))][j-1]); 
        }
    }
    for(int i=1;i<=m;i++){
        scanf("%d%d",&l,&r);
        sum=0;
        for(int x=l;x<=r;x++){
            for(int y=x;y<=r;y++){
                sum=(sum+ac(x,y))%P;
            }
        }
        if(m<=100000){
            printf("%lld\n",sum%P);
        }else{
            ans^=sum;
        }
    }
    if(m>100000)
        printf("%lld",ans%P);
    return 0;
}