题目描述
设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。
输入
输入多行,每行2个数,分别表示n和m.
输出
计算每一行中最后剩下这个人的编号.
样例输入
10 3
样例输出
4
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
while(cin.hasNext()) {
int n=cin.nextInt();
int m=cin.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++) {
a[i]=i+1;
}
int s1=0,len=n,count=1;
while(len>1) {
if(a[s1%n]!=0) {
if(count%m==0) {
a[s1%n]=0;
len--;
count++;
s1++;
}
else
{
count++;
s1++;
}
}
else
{
s1++;
}
}
for(int i=0;i<n;i++) {
if(a[i]!=0)
System.out.println(a[i]);
}
}
}
}