8 條題解
-
1
#include <stdio.h> int find(int m, int x) { int flag[1000] = {0}; //用1来标记去除 int count = 0; int cnt = m; int ans = 0; while (cnt > 1) { while (flag[ans] == 1) { ans = (ans + 1) % m; } count++; if (count == x) { flag[ans] = 1; cnt--; count = 0; } ans = (ans + 1) % m; } for (int i = 0; i < m; i++) { if (flag[i] == 0) { return i + 1; } } } int main() { int n; scanf("%d", &n); for (int i = 1; i <= n; i++) { int m, x; scanf("%d%d", &m, &x); printf("%d\n", find(m, x)); } return 0; }
資訊
- ID
- 198
- 時間
- 3000ms
- 記憶體
- 128MiB
- 難度
- 3
- 标签
- (無)
- 遞交數
- 392
- 已通過
- 201
- 上傳者