【PAT B 1026】程序运行时间

脑残输入输出就有cin和cout,格式化输入和输出就用scanf和printf。
PAT中有特别水的题,但是测试样例真的都很用心啊。题目中说的打点时间是每秒钟100次,不够的四舍五入。

四舍五入:四舍五入是一种[精确度]的计数保留法,与其他方法本质相同。但特殊之处在于,采用四舍五入,能使被保留部分的与实际值差值不超过最后一位数量级的二分之一:假如0~9等概率出现的话,对大量的被保留数据,这种保留法的误差总和是最小的。这也是我们使用这种方法为基本保留法的原因。[1]

所以对于能进到100的最小数是45,因为进行整除 / 运算时,只保留商而会把余数舍去,所以要对余数进行判断。大于45的,进位置一,否则就是0。把两者加起来,再进行正常的除基取余法。

#include 
#include 
using namespace std;
const int maxn = 10005;
const int persec = 100;
int main(void){
    int begin,end,time;
    int h,m,s;
    int carry = 0;
    cin >> begin >> end;
    if((end - begin) % persec >= 45)
        carry = 1;
    time = (end - begin)/persec + carry;
    s = time % 60;
    time /= 60;
    m = time % 60;
    time /= 60;
    h = time % 60;

    printf("%02d:%02d:%02d",h,m,s);

    return 0;
}

参考文献
[1]:百度百科https://baike.baidu.com/item/四舍五入/6730333?fr=aladdin

你可能感兴趣的:(【PAT B 1026】程序运行时间)