小样例过了,但是大样例最后两位错了
  • 板块P10510 进制
  • 楼主Agil12_
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/20 19:02
  • 上次更新2024/5/20 19:10:17
查看原帖
小样例过了,但是大样例最后两位错了
1139221
Agil12_楼主2024/5/20 19:02
#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
int v,q;
string s="0123456789";
int f(string x)
{
	int ans=0,k=0;
	for(int i=0;i<x.size();i++)
	ans+=(x[i]-'0')*pow(3,k++);
	return ans;
}
string change(int x)
{
	string a="";
	while(x)
	{
	a+=s[x%3];
	x/=3;
	}
	return a;
}
signed main()
{
	scanf("%lld%lld",&v,&q);
	string s=change(v);
	//cout<<s;
	int n=(int)s.size();
	while(q--)
	{
		int op,i;
		scanf("%lld%lld",&op,&i);
		/*while(i>n)
		{
			s+='0';
			n++;
		}*/
		//cout<<s<<endl;
		if(op==1)
		{
			if(s[i]=='0')
			s[i]='1';
			else if(s[i]=='1')
			s[i]='2';
			else s[i]='0';
		}
		else if(op==2)
		{
			if(s[i]=='0')
			s[i]='2';
			else if(s[i]=='1')
			s[i]='0';
			else s[i]='1';
		}
		else 
		{
			if(s[i]=='1')
			s[i]='2';
			else if(s[i]=='2')
			s[i]='1';
			else continue;
		}
		//cout<<s<<endl;
		cout<<f(s)<<endl;
	}
	
	
	return 0;
}
2024/5/20 19:02
加载中...