满江红!dalao求调
查看原帖
满江红!dalao求调
1246661
feng_chenShy楼主2025/2/8 10:58
#include <bits/stdc++.h>
using namespace std;
long long s,h[40];
int k,a[40];
void rs(long long n,int x){
	if(n>=3){
		a[x]=n%3;
		rs(n/3,x+1);
		return ;
	}
	a[x]=n;
	return ;
}
void ch(){
	h[0]=1;
	for(register int i=1;i<=38;i++){
		h[i]=h[i-1]*3;
	}
}
int main (){
	scanf("%lld",&s);
	scanf("%d",&k);
	rs(s,0);
	ch();
	int d,q;
	while(k--){
		scanf("%d%d",&d,&q);
		int cnt=0;
		if(d==1){
			cnt=a[q];
			a[q]=(a[q]+1)%3;
			cnt=a[q]-cnt;
			cnt*=h[q];
		}
		if(d==2){
			cnt=a[q];
			if(a[q]==0)
				a[q]=2;
			if(a[q]==1)
				a[q]=0;
			if(a[q]==2)
				a[q]=1;
			cnt=a[q]-cnt;
			cnt*=h[q];
		}
		if(d==3){
			cnt=a[q];
			if(a[q]==1)
				a[q]=2;
			if(a[q]==2)
				a[q]=1;
			cnt=a[q]-cnt;
			cnt*=h[q];
		}
		s+=cnt;
		cout<<s<<'\n';
	}
	return 0;
}

小样例对了 大样例不对

2025/2/8 10:58
加载中...