面试题:给出一个对应规则,让输入一个数取出是哪个手指

题目类似:(因是口头给的,我也理解了一段时间才弄清楚)

有以下规则:(原题大意是一串序列对应于5个手指)

X           Y

0    1

1    2

2    3

3    4

4    5

5    4

6    3

7    2

8    1

9    2

10    3

11    4

12    5

13    4

14    3

...    ...

让随意输入一个X,输出一个对应的Y来

经过分析,我采用如下方式:

找到规律Y每8个一组,所以可以让X对8取余,余数就会与Y有关系,如下:

int getY(const int X)

{

  int temp = X % 8;//0,1,2,3,4,5,6,7

  if(temp > 4)

    return 8 - temp + 1;

  else

    return temp + 1;

}

虽然是可以实现的,不过考官要求不用大于判断,使用更精巧的方式来实现,我想了很长时间也没想出比用>更显得精巧的方式,实在是郁闷,还请知道的高人指教!

原文地址:https://www.cnblogs.com/XiaoG/p/1823654.html