• 题目描述
    宁静的草原上一南一北坐落着两个美丽的村庄牛村和羊村。喜羊羊们瞎折腾把羊村的供水系统搞砸了,羊村村民没有饮用水危在旦夕,羊村村长打电话求助牛村村长,牛村火速派牛可乐和牛能给羊村送水。
    牛可乐和牛能负责开车运送一辆装满矿泉水的大货车去羊村,在路上牛可乐和牛能如果渴了会直接饮用车上的矿泉水,如果碰到路人求水也会从车上舀水送给他,当他们到达羊村的时候车上的矿泉水总共重Y千克。
    村长记得刚出发的时候总共有k桶一样大小的水,总重量小于等于n千克,请问从牛村到羊村路上牛可乐和牛能总共消耗了多少千克的水?

  • 输入描述:
    输入一行,包含三个整数Y,k,n 。 (1<=Y,k,n<=图片说明 ;n/k<=图片说明

  • 输出描述:
    输出一行,输出可能消耗的水重量,用空格隔开。如果不存在这样的重量,输出−1

  • 示例1
    输入:10 1 10
    输出:0

  • 示例2
    输入:10 6 40
    输出:2 8 14 20 26

  • 解题思路:
    根据题意,可能消耗的水的重量为初始重量减去 Y,而初始重量小于等于 n,并且初始状态下,每桶水的重量一样,因此,初始重量可能的取值则为从 i = 1 到 i = n/k(向下取整),但由于会剩余 Y,因此,只有当初始重量 k*i >= Y 时才有可能会剩余 Y。则设置一个布尔值 exist = false,在循环过程中,若存在消耗的水,则 exist = true。循环结束后,根据 exist 的真假判断是否存在消耗的水。

  • C# 代码:

    using System;
    class Program{
      static void Main(){
          string input;
          string[] tokens;
          while((input = Console.ReadLine()) != null){
              tokens = input.Split();
              int Y = int.Parse(tokens[0]);
              int k = int.Parse(tokens[1]);
              int n = int.Parse(tokens[2]);
              bool exist = false;
              for(int i = 1; i <= n/k; i++)
                  if(k*i >= Y){
                      exist = true;
                      Console.Write(k*i - Y + " ");
                  }
              if(!exist) Console.Write(-1);
              Console.WriteLine();
          }
      }
    }