8 條題解
-
3
直接从最后一个人逆向往回筛。
#include <stdio.h> int main() { int t; scanf("%d",&t); while (t--) { int m,n,i,a=0; //m是人数,i是剩余人数,n是报号 scanf("%d %d", &m, &n); for (i = 1; i <= m; i++) { a = (a + n) % i;//从零开始记录每次过滤报号的人数,不能大于当前剩余人数 //当i==m时,逆着看就是每次都在去除一次报号n的人,直到把人数筛的没有人 //那再多一个人就是剩下的人了 } printf("%d\n", a + 1); } return 0; }
資訊
- ID
- 198
- 時間
- 3000ms
- 記憶體
- 128MiB
- 難度
- 3
- 标签
- (無)
- 遞交數
- 392
- 已通過
- 201
- 上傳者