第一題:
數小孩的題。
假設n個小孩圍成一圈,每次數第m個小孩,該小孩被踢出來,請問當只剩下一個人的時候是第幾個人。(比如m=3,第一次數到第3個,第二次從第4個開始往下數,轉圈數)寫一個方法來實現。
第二題:
假設有個int型的數n,實現高低位的互換,比如12345,給換成52341,寫一個方法實現n的高低位的互換。(n是幾不知道)
public class Job {
public Job(){}
//把一個數翻過來表示
private void job0(){
int n = 123050;
String out = "";
while(n != 0){
int r = reverse(n);
n = (n -r)/10;
out += r;
}
System.out.println(out);
}
private int reverse(int n){
do{
n = n%10;
}while(n > 10);
return n;
}
/*
*假設n個小孩圍成一圈,每次數第m個小孩,該小孩被踢出來,
*請問只剩下一個人的時候是第幾個人
*/
private void job1(){
int n = 7;
int m = 4;
int[] a = new int[n];
for(int i = 0; i < a.length; i++){
a[i] = i+1;
System.out.print(a[i] + " ");
}
System.out.print("/n");
find(a,m);
}
private void find(int[] a,int m){
int find = 0;
int len = a.length;
while(len > 1){
if((find + m) > len)
find = find + m - len - 1;
else
find = find + m - 1;
System.out.println("踢出: " + a[find]);
for(int i = find; i < len-1; i++)
a[i] = a[i+1];
len--;
if(find == len) find = 0;
}
System.out.println("留下: " + a[0]);
}
public static void main(String[] args) {
Job J = new Job();
J.job0();
J.job1();
}
}