2020年2月21日 星期五

d140: On Sale

覺得自己的解法比較簡單,故紀錄之

解題思路:
大致上就是照著題目直觀去解,只是要注意1.誤差問題2.無條件捨去至第二位
1.誤差:由於小數在儲存時有誤差,運算時為避免錯誤要加上
2.無條件捨去:使用floor()函數(如求無條件進位則用ceil())

程式碼:
#include <stdio.h>
#include <math.h>

int main()
{
    
    double m;
    while(scanf("%lf",&m)!=EOF)
    {
        int check=0;
        if(m<100)
            check=1;
        if(m<=100)
            m*=0.9;
        else if(m<=500)
            m*=0.8;
        else
            m*=0.6;
        if(check)
            m+=8;
        m+=1e-6;
        printf("$%.2lf\n",floor(m*100)/100);
    }
    return 0;
}

沒有留言:

張貼留言