通用版1.R - Joseph

xiaoxiao2021-02-28  81

#include <stdio.h> #include <stdlib.h> int main() { int k,m,a,i,j,s[15],flag,t; for(i=1;i<=13;i++){ for(j=i+1;;j++){ //a=i; flag=0; t=0; for(k=2*i;k>=i+1;k--){ t=(t+j-1)%k; if(t<=i-1){ flag=1; break; } } if(flag==0){ s[i]=j; break; } } } while(scanf("%d",&k)){ if(!k)break; printf("%d\n",s[k]); } return 0; }

意思就是有n个人,找一个数k,让第k个人死,然后从死的人开始再找第k个杀死,如此反复,最后要让后n/2个人先死,而前n/2个人都活着

模拟一下这个过程,每杀一个人前共有k人,每次杀第j个人,每轮记录目前位置,杀一个人k就减一,中间如果有位置在前k/2就让j+1,重新开始循环计算

转载请注明原文地址: https://www.6miu.com/read-2627635.html

最新回复(0)