2019/2/7训练日记 关于浮点数保留位数储存 四舍六入五留双

今天在与昨天那道做不出来的题抗争了数小时后,终于放弃了,发现自己理解不了题面意思,已经向大佬求助,即使用上了itoa还是于事无补。

四舍六入五留双顾名思义,就是小于五舍去大于五加一,等于五时,前面一位为奇数时进位,为偶数时舍去。 例子:5.501保留整数,保留位后是501大于5的 所以结果是6。 5.12345保留四位第五位恰好是5,且5后面是0.则看5前一位,是偶数结果为5.1234。这个5要舍去。相比下如果为5.12335保留四位,就要进位,结果就是5.1234。

下午遇到了一道四舍六入五留双的题之后,想是否有函数能够将double型的浮点数按保留位数储存到double型中,用itoa 加上 atoi可以,未免将事情复杂化了。
目前我只会以下储存方式

int a;    //保留位数
double b; //需要操作的数字
int c;
cin>>a>>b;
c=b*pow(10,a); //舍掉a位后的所有小数
b=c/pow(10,a);//化为小数储存在b中

其余做的题都比较水,在这里插入图片描述
这么一道题,让我焦头烂额,从十点半做到十一点半。真的没有头绪,如果使用暴力,肯定会超时,很快否定了这个想法。就当我打算写博客准备放弃的时候。
突然。当第一个人吃掉一颗葡萄后他一定是n的倍数,同过对n-1分解因数,这里是分解因数,不是分解质因数。
这样就降低了不必要的时间消耗,通过带入第二个人第三个人,便可以逐步排除不正确的因数,留下正确的因数。再选出较大的即可。

原文地址:https://www.cnblogs.com/lunatic-talent/p/12799112.html