【问题标题】:what is meaing of this specified constraint这个特定约束的含义是什么
【发布时间】:2018-11-18 18:57:08
【问题描述】:

读取与一个人的年龄(以天为单位)相对应的整数值,并以年、月和日为单位打印它,然后是其各自的消息“ano(s)”、“mes(es)”、“dia(s) ”。

注:仅为方便计算,以全年为365天,每月30天计算。

(((在测试的情况下,永远不会出现允许 12 个月和某些天的情况,例如 360、363 或 364。这只是为了测试简单的数学推理而进行的练习。 ))) 这是什么意思

输入 输入文件包含 1 个整数值。

输出 打印输出,如下例所示。

【问题讨论】:

  • 大多数问题给人的印象是盲目的家庭作业垃圾,这个问题太宽泛了,无法回答。
  • 它不是“约束”。你被告知读取一个包含整数值的文件,你应该将其转换为年、月、日的天数,然后打印结果。例如,如果输入值为 366,则输出将为 1 year, 0 months, 1 day360 等不会作为余数出现,因为每月 30 天的设计 (30 * 12 = 360)。
  • 我将问题解释为询问粗体文本的含义。这是对输入的约束。
  • @weather:如果我理解正确,1 año, 0 meses, 1 día 除了没有变音符号(我的体面感坚持使用“año”。)但你说得对,它不是一个约束。
  • @rici 我跳过了关于使用的自然语言的评论,但看起来应该正确使用复数。这并不比使用正确的每月天数更棘手(假设没有闰年)。

标签: c uri


【解决方案1】:

在测试的情况下,永远不会出现允许 12 个月和某些天的情况,例如 360、363 或 364。这只是为了测试简单的数学推理而进行的练习。

这是对输入的约束。这意味着您不会得到像 360 或 716(即 365 + 360)这样的输入。或任何数字 N*365 + 360。或 N*365 + 361 等(最多 364)。这只是为了让您的数学保持简单,这样您就不必处理超过 11 个月的年数。

359 将是有效输入,产生 0 年 11 个月和 29 天。

【讨论】:

  • 如果只有真正的日期/时间计算可以这么简单。
  • @JohnBode 不开玩笑!这就是为什么我们有这类东西的库,而且仍然很容易把它装满。 xkcd.com/1883
  • 我应该如何处理或者输入不能包含像360这样的数字
  • @JeffLearman:This 是迄今为止我最喜欢的关于日期时间计算的咆哮。
  • @ahmedramadan - 对输入的约束意味着您可以忽略特殊情况:它们不会发生。只需进行明显的计算:将天除以 365 得到年,将余数除以 30 得到月,将余数作为天
【解决方案2】:

如果除以 365 后的余数是 360364 天,那将是第 13 个月(如果每月 30 天)。

粗体字是一个保证,您不会得到与该结果相关的数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多