Codeforces Round #487 (Div. 2) B(题意题)

题意:就是给你一个长度为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");
	}
}

猜你喜欢

转载自blog.csdn.net/wjmwsgj/article/details/80662156