送水
送水
https://ac.nowcoder.com/acm/problem/22241
题目描述
宁静的草原上一南一北坐落着两个美丽的村庄牛村和羊村。喜羊羊们瞎折腾把羊村的供水系统搞砸了,羊村村民没有饮用水危在旦夕,羊村村长打电话求助牛村村长,牛村火速派牛可乐和牛能给羊村送水。
牛可乐和牛能负责开车运送一辆装满矿泉水的大货车去羊村,在路上牛可乐和牛能如果渴了会直接饮用车上的矿泉水,如果碰到路人求水也会从车上舀水送给他,当他们到达羊村的时候车上的矿泉水总共重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(); } } }