第一题:
数小孩的题。
假设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();
}
}