8 条题解

  • 1
    @ 2025-11-27 0:37:46
    #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
    上传者