* @author Administrator
*思路:
*定义一个长度为n的数组,里面的数值全部为1,然后数组内部的值相加,等于m时输出该位置的下标,然后把这个值记为0
*/
public class Test03 {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner input =new Scanner(System.in);
System.out.println("请输入n的整数值:");
int n=input.nextInt();
System.out.println("请输入m的整数值:");
int m=input.nextInt();
int [] arr=atSort(n,m);
int [] arrS=new int [n];
//定义n的数组
for(int i=0;i<n;i++){
arrS[i]=i+1;
}
//输出最终的值
for(int i=0;i<n;i++){
System.out.print(arrS[arr[i]]+" ");
}
}
public static int[] atSort(int n,int m){
//定义值全部为1的数组arr
int [] arr =new int[n];
for(int i=0;i<n;i++){
arr[i]=1;
}
//定义装下标元素的数组arrF
int [] arrF =new int [n];
//给arrF赋值,主要算法
int j=0;
int count=0;
for(int i=0;i<n;i++){
int sum=0;
//循环累加arr[i],当等于sum等于m时退出,得到此时的下标
while(sum!=m){
sum=sum+arr[j];
count=j;
if(j<n-1){
j++;
}else{
j=0;
}
}
//将下标赋值为arrF数组
arrF[i]=count;
//将arr数组位置的值变为0
arr[count]=0;
}
return arrF;
}
}