一道C#竞赛题
来源:互联网 发布:excel 数据截断 编辑:程序博客网 时间:2024/06/05 05:01
题目的大致意思是:一些数字顺时针排成一个圈,最上面的是1,从1开始,隔一个数,移除一个数,顺时针一直移下去,直到最后剩下两个数,这两个数就是幸运数字。
例如1、2、3、4、5,开始如下图:
然后从1开始隔一个去掉一个数,如下图:
这个时候已经一轮了,但是剩余数字还大于2,所以继续去,这个时候4被去掉了,跳过数字5,就要去数字1了,如下图:
最后的Lucky Number就是3和5.
要求:
输入:一个数字n,即最大的数
输出:第一行显示各个被移除的数字,按被移除的顺序显示
第二行显示剩下的两个性欲数字。
我的代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace LuckyNumber{ class Program { static void Main(string[] args) { int n = InputNumber(); IList<int> numberList = InitNumberList(n); numberList = RemovedNumberOperation(numberList); PrintLuckyNumber(numberList); Console.ReadLine(); } //输入数字 public static int InputNumber() { try { // ReSharper disable AssignNullToNotNullAttribute return int.Parse(Console.ReadLine()); // ReSharper restore AssignNullToNotNullAttribute } catch (Exception) { throw; } } //初始化数字列表 public static IList<int> InitNumberList(int n) { IList<int> numberList = new List<int>(); for (int i = 1; i <= n; i++) { numberList.Add(i); } return numberList; } //去掉数据操作 public static IList<int> RemovedNumberOperation(IList<int> numbers) { Boolean needRemove = false; while (true) { //将numberList所有需要去掉的数字先都赋值为0 for (int i = 0; i < numbers.Count; i++) { if (needRemove) { Console.Write(numbers[i] + " "); numbers[i] = 0; needRemove = false; } else { needRemove = true; } } //去除numberList所有的0 RemovedZeroFromNumberList(numbers); if (numbers.Count == 3) { if (needRemove) { Console.Write(numbers[0]); numbers.RemoveAt(0); } else { Console.Write(numbers[1]); numbers.RemoveAt(1); } return numbers; } if (numbers.Count == 2) return numbers; } } public static IList<int> RemovedZeroFromNumberList(IList<int> numbers) { while (true) { if (numbers.Contains(0)) numbers.Remove(0); else { return numbers; } } } //打印幸运数字 public static void PrintLuckyNumber(IList<int> numbers) { Console.WriteLine(); Console.WriteLine(numbers[0] + " " + numbers[1]); } }}
- 一道C#竞赛题
- 一道竞赛题
- 一道竞赛题
- 又一道竞赛题
- 一道程序竞赛题
- 关于一道竞赛题
- 一道 Google 竞赛题的解法
- 一道 Google 竞赛题的解法
- 一道简单的itat竞赛题
- 一道经典的C++竞赛题
- 一道2016年美国高中数学竞赛题
- 一道初等平面几何竞赛题的暴力解法
- [转贴] 一道Google中国挑战赛竞赛题的解法
- 一道C#面试题
- 一道C#面试题
- c#一道面试题类
- 一道C#字符串的题目
- 信息学竞赛题
- aspnet_wp.exe could not be started
- 【Django tutorial 2】
- 串口通信CSerialPort类WriteToPort不能连续发送的问题
- strstr源代码
- 汇编:div指令讲解
- 一道C#竞赛题
- 在Linux下安装android开发环境并以USB调试方式链接手机进行开发e
- Adapter example2
- APK反编译Apktool
- 轻松解决 Eclipse Indigo 3.7 中文字体偏小,完美 Consolas 微软雅黑混合字体!
- 答案
- SQLITE学习笔记二(数据库管理,命令行操作)
- 传递闭包的warshall算法
- uva10054