开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第23天点击查看活动详情
分数的输出
- 分数的输出根据题目的要求进行,但是大体上有以下几个注意点:
- ①输出分数前,需要先对其进行化简。
- ②如果分数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 中已经讨论过 它们的实现。
- lower_ bound(first, last, val)用来寻找在数组或容器的[first, last)范围内第一个值 大于等于val的元素的位置,如果是数组,则返回该位置的指针;如果是容器,则返回该位置的迭代器。
- upper_ bound(first, last, val)用来寻找在数组或容器的[first, last)范围内第一个值大于val的元素的位置,如果是数组,则返回该位置的指针;如果是容器,则返回该位置的迭代器。
- 显然,如果数组或容器中没有需要寻找的元素,则lower boundO和upper_ bound(均返回可以插入该元素的位置的指针或迭代器(即假设存在该元素时,该元素应当在的位置)。
- lower bound()和upper_ bound0的复杂度均为0(og(ast- frst)