比赛 2025.3.18 评测结果 AAATTTTTTT
题目名称 公约数数列 最终得分 30
用户昵称 KKZH 运行时间 21.186 s
代码语言 C++ 内存使用 5.51 MiB
提交时间 2025-03-18 21:41:39
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3)
long long n,gc[100010],a[100010],xx[100010],pre[100010];
int main(){
	freopen("gcdxor.in","r",stdin);
	freopen("gcdxor.out","w",stdout);
	scanf("%lld",&n);
	for(long long i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		if(i==1) gc[i]=a[i],xx[i]=a[i];
		else gc[i]=__gcd(gc[i-1],a[i]),xx[i]=xx[i-1]^a[i];
		pre[i]=gc[i]*xx[i];
	}
	long long aa,b;
	string s;
	long long m;
	scanf("%lld",&m);
	long long add1,add2;
	for(long long i=1;i<=m;i++){
		cin>>s;
		scanf("%lld",&aa);
		if(s[0]=='M'){
			scanf("%lld",&b);  
			aa++;
			a[aa]=b;
			for(int i=aa;i<=n;i++){
				if(i==1) gc[i]=a[i],xx[i]=a[i];
				else gc[i]=__gcd(gc[i-1],a[i]),xx[i]=xx[i-1]^a[i];
				pre[i]=gc[i]*xx[i];
			}
		}else{
			for(int i=1;i<=n;i++){
				if(pre[i]==aa){
					cout<<i-1<<endl;
					break;
				}
				if(i==n) cout<<"no"<<endl;
			}
		}
	}
}