常规解法,结果悲剧超时了
#include<iostream>
#include<list>
int n,d;
std::list<int> chairs;
typedef std::list<int>::iterator litr;
litr itr;
int pos1,pos2;
int main()
{
while (std::cin>>n>>d&&n&&d){
for(int i=0;i!=n;i++){
chairs.push_back(i+1);
}
itr=chairs.begin();
while (true){
if(chairs.size()==1){
break;
}
pos2=(pos1+d-1)%chairs.size();
std::advance(itr,pos2-pos1);
pos1=pos2;
itr=chairs.erase(itr);
}
std::cout<<n<<" "<<d<<" "<<*(chairs.begin())<<std::endl;
pos1=pos2=0;
chairs.clear();
}
}