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
- 标签
- (无)
- 递交数
- 389
- 已通过
- 198
- 上传者