约瑟夫环题解链接:http://tingyun.site/2018/04/26/%E7%BA%A6%E7%91%9F%E5%A4%AB%E7%8E%AF%E9%97%AE%E9%A2%98%E8%AF%A6%E8%A7%A3/
从这里的推到中分为两步
第一:从N个人到n-1个人推到得到 new=(old+q)%n;//q相当于k,一直往下推的话n在变化(在变小).
第二:反推old=(new-q)%n;这样可以一直推下去,一直到所求的n
int s=0;
for(int i=2;i<=n;i++)
{
s=(s+k)%i;
}
System.out.println(s+1);
N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。,
例如:N = 3,K = 2。2号先出列,然后是1号,最后剩下的是3号。
Input
2个数N和K,表示N个人,数到K出列。(2 <= N, K <= 10^6)
Output
最后剩下的人的编号
Sample Input
3 2
Sample Output
3
//package p0208;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n,k;
n=sc.nextInt();
k=sc.nextInt();
sc.close();
int s=0;
for(int i=2;i<=n;i++)
{
s=(s+k)%i;
}
System.out.println(s+1);
}
}