一个小女孩正在用左手手指数数,从1数到n。她从拇指算作1开始数起,然后,食指为2,中指为3,无名指为4,小指为5。接下来调转方向,无名指算作6,中指为7,食指为8,大拇指为9,如此反复。问最后会停在那个手指上?用编号1、2、3、4、5依次表示大拇指、食指、中指、无名指、小指。 输入格式: 输入多组数据。每组数据占一行,只包含一个整数n(1<=n<=1000000000)。 输出格式: 每组数据占一行,只包含一个介于1和5之间的整数,表示最后停留的手指。

    示例数据

    大拇指         食指          中指          无名指              小指

      1               2              3              4                    5

      9               8              7              6

                      10            11             12                 13

                 。。。。。。                     14

                     。。。。。。。。。。。。。。

 题目分析:

     1)除了第一行是5个数,其余行都只有4个数。

     2)往返是奇偶行交替。

假设输入的数字为n,根据结论1,假设第一行为4个数,然后对4求余。通过余数就可以知道对应的是哪个手指,所以(n-1)%4得到余数。根据结论2,往的过程,(余数+1)才是实际对应的手指,而返则是(5-余数)才是实际对应的手指。

程式:

      

public void CountFinger(int n)
{
  int i=(n-1)%4; ---i为n对4的余数
  int j=(n-1)/4; ---j为n对4的整除 用于判断最后一行是奇数行,还是偶数行
  if(j%2==0) 
  {
       i++;       --最后一行是奇数行,余数+1
  }
  else
  {
      i=5-i;     --最后一行是偶数行,5-余数
  }
  switch(i)
  {
         case 1:  
               Console.WriteLine("{0}:大拇指",n);
               break;
         case 2:  
               Console.WriteLine("{0}:食指",n);
               break;
         case 3:  
               Console.WriteLine("{0}:中指",n);
               break;
         case 4:  
               Console.WriteLine("{0}:无名指",n);
               break;
         case 5:  
              Console.WriteLine("{0}:小指",n);
              break;
   }
}

  

 

 posted on 2014-10-22 19:59  会飞的金鱼  阅读(619)  评论(0)    收藏  举报