洛谷CF1342B Binary Period题解
原题解和原题。
这道题比较水。
这道题分两种情况,分别为 $t$ 由一种字符构成和由两种字符构成两种情况。
-
$t$ 只有 $0$ 或 $1$。
此时的 $k$ 就是 $1$,直接输出 $t$ 就是最好的选择。 -
$t$ 既有 $0$ 又有 $1$。
此时的 $k$ 为 $2$,字符串由01或10构成。我们设 $a_i$ 为字符串的第 $i$ 个字符,且它为 $0$。如果 $a_{i+1}$ 也是 $0$,那么就在 $a_i$ 后面加上 $1$,否则不变。当 $a_i$ 为 $1$ 时也是同样的套路。
Code
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
string t;
int n,i,j,len;
cin>>n;
while(n--)
{
cin>>t;
len=t.size();
for(i=0;i<len-1;++i)
if(t[i]!=t[i+1])break;
if(i==len-1)
{
cout<<t<<'\n';
continue;
}//第一种情况
for(i=0;i<len-1;++i)
{
cout<<t[i];
if(t[i]==t[i+1])
cout<<'1'-t[i];
//不同就补上一个,是整型还是字符都无所谓
}
cout<<t[len-1]<<'\n';//第二种情况
}
return 0;
}