链接:
https://codeforces.com/problemset/problem/1328/C
题意:
三元数,是由0,1,2组成
定义a⊙b 为第i位数字(ai+bi)%3=xi
给定x,要求让max(a,b)最小;
解:
因为要求让ab最小所以ai,bi和为xi可以忽略取余
在没找到1之前,0,2平均分
找到以后,1给a,后面的所有都给b;
实际代码:
#include<iostream>
#include<cstring>
#define csh(a) memset(a,0,sizeof(a))
using namespace std;
const int N=5E4+5;
int sz[N];
int main()
{
int k;
cin>>k;
for(int f=1;f<=k;f++)
{
csh(sz);
int n;
cin>>n;
string a,b;
bool sc=1;
for(int i=1;i<=n;i++)
{
char s;
cin>>s;
int mao=s-'0';
sz[i]=mao;
if(mao==1&&sc)
{
a+='1';
b+='0';
sc=0;
}
else if(sc==0)
{
b+='0'+mao;
a+='0';
}
else if(mao==0)
{
b+='0';
a+='0';
}
else if(mao==2)
{
b+='1';
a+='1';
}
}
cout<<a<<endl<<b<<endl;
}
}
限制:
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output