我在学校有这个问题。我知道我几乎是对的,但似乎我在代码中的某个地方有问题。问题是我有两个由用户输入的值。第一个(n)是想要进入电梯的人数,第二个(p)是电梯可以接受的人数。问题是电梯将进行多少次旅行以便将所有人带到选定楼层。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Elevator
{
class Program
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
int p = int.Parse(Console.ReadLine());
int elevatorTrips = 0;
elevatorTrips = n / p;
if (elevatorTrips % 10 != 0)
{
elevatorTrips += 1;
Console.WriteLine(elevatorTrips);
}
else {
Console.WriteLine(elevatorTrips);
}
}
}
}
答案 0 :(得分:0)
我认为应该这样做。使用Math.Ceiling。
来自MSDN:
返回大于或等于指定的双精度浮点数的最小整数值。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Elevator
{
class Program
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
int p = int.Parse(Console.ReadLine());
var elevatorTrips = Math.Ceiling((double)n / p);
Console.WriteLine(elevatorTrips);
}
}
}
DotNet-Fiddle:https://dotnetfiddle.net/srLTVZ
答案 1 :(得分:0)
将TotalNumberOfPeople
除以ElevatorCapacity
并获得double
的答案,然后将其四舍五入到第一个更大的int
,这样您就可以知道您是否有小数。这样,如果你有一个小数,它将被转换为1(并添加到最终结果)
P.S:您可以将0.5
添加到double
答案的任何内容中,然后将其分配给另一个int变量,您将获得最终解决方案。
答案 2 :(得分:0)
让我们看看;假设我们排队13
人,电梯的容量为3
,答案是5
:
4 turns with 3 peoples
1 turn with 1 people
你能看到这种模式吗?电梯已满载的peoples / capacity
次行程,可能是电梯部分加载的额外行程。解决方案非常简单
int capacity = 3;
int peoples = 13;
int trips = peoples / capacity + (peoples % capacity != 0 ? 1 : 0);
在您当前的实施中
if (elevatorTrips % 10 != 0)
错误:幻数 10
代表什么?