题意:就是给你一个长度为n的由0和1和.组成的序列,之后和他的周期p,让你在.中填入1或者0这个串的周期不为p就好了
思路:就是看如果说本身的一个i和i+p 不一样那么不论我们. 填什么他的周期都不是p,那么对于一个是.一个是数字的,我们取他的相反的就好了,如果两个都是点的话,我们让一个是1一个是0就好了,主要是题意。。。
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string ch;
int n,p;
scanf("%d%d",&n,&p);
cin>>ch;
int len = ch.size();
int flag = 0;
for(int i = 0 ; i < n-p ; i++)
{
if(ch[i] != ch[i+p])
{
if(ch[i] =='.' && ch[i+p] !='.') ch[i] = !(ch[i+p]-'0') +'0';
else if(ch[i] !='.' && ch[i+p] =='.') ch[i+p] = !(ch[i] - '0')+'0';
flag = 1;
break;
}
else
{
if(ch[i] == '.')
{
ch[i] == '0' ,ch[i+p] = '1';
flag = 1;
break;
}
}
}
if(flag)
{
//puts("YES");
for(int i = 0 ; i < n ; i++)
{
if(ch[i] == '.') printf("0");
else printf("%c",ch[i]);
}
puts("");
}
else
{
puts("NO");
}
}