• 题目描述
    牛牛想要挑战一下自己的勇气,于是打算去玩牛村的刺激过山车,牛村的刺激过山车一排只坐一个人,牛牛胆子比较小,所以他要求必须坐在前面有人或者后面有人的空位置。
    牛牛上车前只知道这批过山车总共有n个位置,已经有k个人坐上去了,请帮助牛牛计算一下最少有多少个位置符合他的要求,最多有多少个位置符合他的要求。
    注:第一个位置的前面和最后一个位置的后面我们认为是没有人。
  • 输入描述:
    一行两个整数n,k。 n≥k≥0

  • 输出描述:
    输出两个整数表示最少和最多的符合他要求的位置

  • 示例1
    输入:6 3
    输出:1 3

  • 示例2
    输入:6 2
    输出:1 4

  • 解题思路:
    这道题其实比较容易想到,但是会漏掉两个特殊条件,一个是 n == k,另一个是 k == 0。我就是没考虑到没有人上车的情况,这样小牛也不敢上车,因此当 k == 0 时,没有位置。可以使用 C# 中的 Math 类的静态方法 Min(),统一上述两种特殊情况。

  • C# 代码:

    using System;
    class Program{
      static void Main(){
          string input;
          string[] tokens;
          while((input = Console.ReadLine()) != null){
              tokens = input.Split();
              int n = int.Parse(tokens[0]);
              int k = int.Parse(tokens[1]);
              int rem = n-k;
              int max = Math.Min(2*k, rem);
              int min = Math.Min(max, 1);
              Console.WriteLine(min + " " + max);
          }
      }
    }