依旧是一道约瑟夫环的问题
给一个字符串从第一个开始报数,报到1999的就删除,就这样依次删掉,直到剩下最后一个字符
用gets输入字符串有个好处就是可以去掉空格,再用一个STRING s连接成一个完整的字符串
然后递推公式m=(m+1999)%i,直到最后一个
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
const int N=1999;
const int ma=30010;
char d[ma];
int main()
{
string s;
int m=0;
while(gets(d))
s+=d;
int l=s.size();
for(int i=2;i<=l;i++)
m=(m+N)%i;
if(s[m]=='?')
printf("Yes\n");
else if(s[m]==' ')
printf("No\n");
else
printf("No comments\n");
return 0;
}