void main()
{ int n,b,s//n总灯数,b开始数的灯号,s间隔
int a[256],i,k,m,p//a存放灯号,k当前数到位置,m当前数到亮灯计数,p熄灭灯数
scanf("%d%d%d",&n,&b,&s)if ( n>256 ) n=256//约数最多256盏灯
for ( i=0i<ni++ ) a[i]=i//灯号赋值
k=bm=sp=0
while ( p<n ) //当还有灯没有熄灭时循环
{ if ( m==s ) { printf("%d ",a[k])a[k]=(-1)p++m=0} //数到了,输出位置,标记熄灭
else { do { k++k%=n} while ( a[k]<0 )m++} //向后数并折返,只有亮的灯m才计数
}
printf("\n")
}
标准C中没有reverse()函数这是C++的一个新增函数
template<class BidirectionalIterator>
void reverse(
BidirectionalIterator _First,
BidirectionalIterator _Last
)
需要引用头文件
#include <algorithm>
命名空间:std