2014-06-16 15:43:57
题意&思路:简单环状表模拟。
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 using namespace std; 5 6 int main(){ 7 int n,k,m,pk,pm; 8 int cnt,used[25]; 9 while(scanf("%d %d %d",&n,&k,&m) == 3){ 10 if(!n && !k && !m) 11 break; 12 memset(used,0,sizeof(used)); 13 cnt = 0; 14 pk = 0; 15 pm = n + 1; 16 while(cnt < n){ 17 for(int i = 0; i < k; i += !used[pk]){ 18 ++pk; 19 if(pk > n) 20 pk = 1; 21 } 22 for(int i = 0; i < m; i += !used[pm]){ 23 --pm; 24 if(pm < 1) 25 pm = n; 26 } 27 used[pk] = used[pm] = 1; 28 if(pk == pm){ 29 ++cnt; 30 printf("%3d",pk); 31 } 32 else{ 33 cnt += 2; 34 printf("%3d%3d",pk,pm); 35 } 36 if(cnt < n) printf(","); 37 } 38 puts(""); 39 } 40 return 0; 41 }