Poj 2359 Questions (约瑟夫环)

题目链接:http://poj.org/problem?id=2359

题意:一个约瑟夫环问题,对于输入的字符串,从开始依次进行报数,当报到N=1999时,删除对应的字符,字符串可以看作是首尾相连的环,直到剩余最后一个字符。如果剩余字符为'?',则输出结果:Yes;如果剩余字符为' ',则输出结果:No;否则输出结果:No comments .


这题的输入形式非常纠结。。。

#include 
#include 
#include 
using namespace std;

const int m=1999;
char str[30005];

int main ()
{
	int k=0,s=0;
	char ch;
	while((ch=getchar())!=EOF)
		if (ch!='\n')
			str[k++]=ch;
	for (int i=2;i<=k;i++)
		s = (s + m) % i;
	if (str[s]=='?')
		printf("Yes\n");
	else if (str[s]==' ')
		printf("No\n");
	else
		printf("No comments\n");
	return 0;
}


你可能感兴趣的:(Poj 2359 Questions (约瑟夫环))