洛谷CF1342B Binary Period题解

小说家-“奥尔菲斯” / 2024-07-10 / 原文

原题解和原题。

这道题比较水。

这道题分两种情况,分别为 $t$ 由一种字符构成和由两种字符构成两种情况。

  1. $t$ 只有 $0$ 或 $1$。
    此时的 $k$ 就是 $1$,直接输出 $t$ 就是最好的选择。

  2. $t$ 既有 $0$ 又有 $1$。
    此时的 $k$ 为 $2$,字符串由 0110 构成。我们设 $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;
}