[TIOJ] 1026. 恶猿果实

题目连结:http://tioj.infor.org/problems/1026
题目的意思是当开始走路后,第一步是一公尺,每次步伐是上一次的两倍,目标的公尺距离是奇数,并且可以往前和往后走。

每次步伐的距离因为都是2倍,刚好跟二进位的算法是一样的,不过二进位是用累加方式计算,本题有加有减,但是只要转换一下想法,因为刚好是两倍,所以下一步减现在这一步会等于这一步的距离,所以只要把二进位为0的部分变成1,然后右边一阶变成0,就可以跟二进位一样的算法了。

由于本题输入是奇数,所以二进位最右边必定为1可以不必判断。

string input = Console.ReadLine();long length = 0;List<string> direct = new List<string>();if (Int64.TryParse(input, out length)){  if(length > 0)    length /= 2;  for (long remainder = length % 2; length > 0; length /= 2, remainder =  length % 2)  {    direct.Add(remainder == 0? "-" : "+");    if (length / 2 == 0)      direct.Add("+");  }                    Console.WriteLine("{0}\n{1}", direct.Count, string.Join(" ", direct.ToArray()));}

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章