奇数位丢弃

题目

对于一个由0..n的所有数按升序组成的序列,我们要进行一些筛选,每次我们取当前所有数字中从小到大的第奇数位个的数,并将其丢弃。重复这一过程直到最后剩下一个数。请求出最后剩下的数字。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 取奇数
{
class Program
{
static void Main(string[] args)
{
int input = int.Parse(Console.ReadLine());
List<int> list = new List<int>();
if (input <= 100)
{
for (int i = 0; i <= input; i++)
{
list.Add(i);
}
int length = list.Count;
while (length > 1)
{
int k = 0;
for (int j = 0; j < length; j++)
{

if (j % 2 == 0)
{
list.RemoveAt(k);
++k;
Console.WriteLine(k);
}
}
length = list.Count;
Console.WriteLine("xia");
}
Console.Write(list[0]);
}
else
{
Console.WriteLine("数字大于1000");

}
Console.ReadKey();

}
}
}

posted @ 2015-10-31 12:55  小唐糖  阅读(219)  评论(0编辑  收藏  举报