你了解分数的输出吗

123 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第23天点击查看活动详情

分数的输出

  1. 分数的输出根据题目的要求进行,但是大体上有以下几个注意点:
  • ①输出分数前,需要先对其进行化简。
  • ②如果分数r的分母down为1,说明该分数是整数,一般来说题目会要求直接输出分 子,而省略分母的输出。
  • ③如果分数r的分子up的绝对值大于分母down (想一想分子为什么要取绝对值? ), 说明该分数是假分数,此时应按带分数的形式输出,即整数部分为r.up 1 r.down,分子部分为abs(r.up) % r.down,分母部分为r.down。
  • ④以上均不满足时说明分数r是真分数,按原样输出即可。 以下是一个输出示例:
void showResult (Fraction r) {
/ /输出分数r
r = reduction (r) ;
if(r.down == 1) printf ("号11d",r.up) ;
/ /整数
else if (abs(r.up) > r . down){
/ /假分数
printf ("号d号d/8d", r.up / r.down, abs(r.up) 号r.down, r .down) ;
} else {
//真分数
printf ("号d/gd", r.up ,r .down) ;
}

强调一点 : 由于分数的乘法和除法的过程中可能使分子或分母超过int型表示范围,因此般情况下,分子和分母应当使用long long型来存储。

lower bound()和upper_ bound()总结

lower bound0和upper bound0需要用在一一个有序数组或容器中,在4.5.1 中已经讨论过 它们的实现。

  1. lower_ bound(first, last, val)用来寻找在数组或容器的[first, last)范围内第一个值 大于等于val的元素的位置,如果是数组,则返回该位置的指针;如果是容器,则返回该位置的迭代器。
  2. upper_ bound(first, last, val)用来寻找在数组或容器的[first, last)范围内第一个值大于val的元素的位置,如果是数组,则返回该位置的指针;如果是容器,则返回该位置的迭代器。
  3. 显然,如果数组或容器中没有需要寻找的元素,则lower boundO和upper_ bound(均返回可以插入该元素的位置的指针或迭代器(即假设存在该元素时,该元素应当在的位置)。
  4. lower bound()和upper_ bound0的复杂度均为0(og(ast- frst)