一个小女孩正在用左手手指数数,从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
浙公网安备 33010602011771号