比赛 2025.3.18 评测结果 AAATTTTTTT
题目名称 公约数数列 最终得分 30
用户昵称 djyqjy 运行时间 21.162 s
代码语言 C++ 内存使用 3.62 MiB
提交时间 2025-03-18 20:53:32
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline int re()
{
    int f=1,num=0;
    char c=getchar();
    while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
    while(c>='0'&&c<='9') num=num*10+c-'0',c=getchar();
    return num*f;
}
inline ll rel()
{
    int f=1;
    ll num=0;
    char c=getchar();
    while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
    while(c>='0'&&c<='9') num=num*10+c-'0',c=getchar();
    return num*f;
}
const int N=100010;
int a[N];
int n,q,p,a1,a2;
char c[10];
inline int gcd(int a,int b)
{
    while(b^=a^=b^=a%=b);
    return a;
}
int main()
{
    freopen("gcdxor.in","r",stdin);
    freopen("gcdxor.out","w",stdout);
    n=re();
    for(int i=0;i<n;i++) a[i]=re();
    q=re();
    while(q--)
    {
        scanf("%s",c);
        if(c[0]=='M') a[re()]=re();
        else
        {
            ll x=rel();
            a1=a2=0;
            for(p=0;p<n;p++)
            {
                a1=gcd(a1,a[p]);
                a2^=a[p];
                if(1ll*a1*a2==x)
                {
                    printf("%d\n",p);
                    break;
                }
            }
            if(p==n) printf("no\n");
        }
    }
    return 0;
}