zoukankan      html  css  js  c++  java
  • [codeup]1128 Problem B出租车费

    题目描述

    某市出租车计价规则如下:起步4公里10元,即使你的行程没超过4公里;接下来的4公里,每公里2元;之后每公里2.4元。行程的最后一段即使不到1公里,也当作1公里计费。
    一个乘客可以根据行程公里数合理安排坐车方式来使自己的打车费最小。
    例如,整个行程为16公里,乘客应该将行程分成长度相同的两部分,每部分花费18元,总共花费36元。如果坐出租车一次走完全程要花费37.2元。
    现在给你整个行程的公里数,请你计算坐出租车的最小花费。

    输入

    输入包含多组测试数据。每组输入一个正整数n(n<10000000),表示整个行程的公里数。
    当n=0时,输入结束。

    输出

    对于每组输入,输出最小花费。如果需要的话,保留一位小数。

    样例输入

    3
    9
    16
    0
    

    样例输出

    10
    20.4
    36

    AC代码

     1 #include <stdio.h>
     2 const double eps = 1e-6;
     3 int main()
     4 {
     5     int n;
     6     double sum = 0.0;
     7     while(scanf("%d",&n) != EOF)
     8     {
     9         sum = 0.0;
    10         if(n == 0)
    11         break;
    12         if(n <= 4)
    13         {
    14             sum    = 10.0;    
    15         }else
    16         if(n > 4&&n <= 8)
    17         {
    18             sum = 10 + 2 * (n - 4);
    19         }else
    20         if(n > 8)
    21         {
    22             while(n > 8)
    23             {
    24                 sum += 18 ;
    25                 n -= 8;
    26             }
    27             if(n <= 4)
    28             {
    29                 sum += 2.4 * n;
    30             }else
    31             {
    32                 sum += 10 + (n - 4) * 2;
    33             }
    34         }
    35         int temp = (int)sum;
    36         if(sum - temp < eps)
    37         {
    38             printf("%d
    ",temp);
    39         }else
    40         printf("%.1lf
    ",sum);
    41     }
    42     return 0;
    43 }

    反思:

    注意当输出整数时,浮点数判断大小的方法。

  • 相关阅读:
    == 与 equals 之区别
    值传递和引用传递
    try-catch-finally容易犯的错误
    设计模式之备忘录模式
    设计模式之观察者模式 Observer
    设计模式之状态模式 State
    设计模式之模板方法模式 templateMethod
    设计模式之策略模式 Strategy
    Java过滤器与SpringMVC拦截器之间的关系与区别
    SpringMVC中使用Interceptor拦截器
  • 原文地址:https://www.cnblogs.com/Ponytai1/p/12270053.html
Copyright © 2011-2022 走看看