题目:
有 N 个人绕成圆圈,按照顺序排号 (1-N) ,第一个人从 1 开始依次报数,报到 3 的人淘汰,接下来的人又从 1 开始依次报数,报到 3 的人淘汰;再报数,直到只剩下一个人,问最后留下的是原来第几号的那个人。
输入格式
一个 ≥1 的整数,代表总共有多少人。
输出格式
一个整数,代表最后剩下的人是几号。
输入输出样例
输入格式
10
输出格式
4
说明/提示
排号从 1 开始。
感觉这个方法好神奇_,但是逻辑上不是很明白 ? ?
#include<stdio.h>
int main()
{
int i,h=0,n;
scanf("%d",&n);
for(i=1;i<=n;i++){
h=(h+3)%i;
}
printf("%d",h+1);
return 0;
}