1 条题解
-
0
C :
#include <stdio.h> void fun(int n,int m) { int p[10000] ; int i ,j ,t ; for(i=0;i<n;i++) p[i] = i+1 ; //对全体进行编号 t = 0 ; // printf("出队顺序如下\n") ; for(i=n;i>=1;i--) { t = (t+m-1)%i ; //循环公式 printf("%d ",p[t]) ; for(j = t+1;j<=i-1;j++) p[j-1] = p[j] ; } printf("\n") ; } int main() { //printf("输入人数n和出队编号m\n") ; int n, m ; while(scanf("%d%d",&n,&m)!=EOF) { fun(n,m) ; } return 0 ; }
C++ :
#include<cstdio> #include<cstdlib> #include<cstring> #include<cctype> #include<cmath> #include<algorithm> #include<iostream> #include<string> #include<vector> #include<bitset> #include<queue> #include<stack> #include<list> #include<map> #include<set> #define TEST #define LL long long #define Mt(f, x) memset(f, x, sizeof(f)); #define rep(i, s, e) for(int i = (s); i <= (e); ++i) #ifdef TEST #define See(a) cout << #a << " = " << a << endl; #define See2(a, b) cout << #a << " = " << a << ' ' << #b << " = " << b << endl; #define debug(a, s, e) rep(_i, s, e) {cout << a[_i] << ' ';} cout << endl; #define debug2(a, s, e, ss, ee) rep(i_, s, e) {debug(a[i_], ss, ee)} #else #define See(a) #define See2(a, b) #define debug(a, s, e) #define debug2(a, s, e, ss, ee) #endif // TEST const int MAX = 2e9; const int MIN = -2e9; const double eps = 1e-8; const double PI = acos(-1.0); using namespace std; bool a[35]; int b[35]; int main() { int n, m; while(~scanf("%d%d", &n, &m)) { Mt(a, true); int num = 0; int i = 0, tem = 0; while(i < n) { // See(i); if(a[i]) { tem++; } if(tem == m) { a[i] = false; b[num++] = i + 1; tem = 0; if(num == n) { break; } } i++; if(i == n) { i = 0; } } for(int i = 0; i < num - 1; ++i) { printf("%d ", b[i]); } printf("%d\n", b[num - 1]); } return 0; }
- 1
信息
- ID
- 844
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者