寄快递费用

Author: Leisureeen

Time Limit: 100ms

Memory Limit: 65535KB

Code Size Limit: 16 KB

64-bit integer IO format: %lld


又到了我们毕业生离校的时候了,Leisureeen返校后要给同学寄一些物品,请你来帮忙算一算大约需要多少钱。

菜鸟驿站给出的计算规则如下:

每1KG(1公斤)为一个计费重量单位,不足1kg向上取整按1kg计费。一般包裹按重量计费,1KG内按照首重计费,超出1KG部分按照续重计费。当包裹体积较大同时重量较轻时,会按照体积计费。量取物品长(cm)、宽(cm)、高(cm)折算成体积重量(KG),折算公式:体积重量=(长*宽*高)/6000。计算出来的体积重量,会与包裹实际重量进行比较,取较重者为最终计费重量,用以计算运费。

输入格式:

第一行是一个正整数N(1<=N<=1000),表示共有N次询问。

接下来共有N行,每行包含4个正整数,分别是k(1<=k<=100)、b(1<=b<=k)、m(1<=m<=10^6)和v(1<=v<=10^8),k表示首重(元/kg),b表示续重(元/kg),m表示质量(单位:g,本文中所有的重量都特指质量,并非重力),v表示体积(立方厘米)。

输出格式:

输出共N行,对每次询问求出寄快递所需要的费用(元),并在一行内输出。

输入样例:

4

8 2 1300 1300

12 8 13300 8888

8 2 6500 8640

15 10 12345 123456

输出样例:

10

116

20

215


我们班的Armstrong用Java写了个程序,当时任务就是真正过样例,暂时不要求ac。

如下代码是简单修改的(只修改注释和格式,未改实际内容):

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int a = sc.nextInt();
            for(int i = 1;i<=a;i++) {
                int k = sc.nextInt();
                int b = sc.nextInt();
                int m = sc.nextInt();
                int v = sc.nextInt();
                int m1 = (m + 999)/1000;
                if(m > v/6) {
                    int sum = k + (m1-1) * b;
                    System.out.println(sum);
                }
                else {
                    int sum1 = k + (v/6000) * b;
                    System.out.println(sum1);
                }
        }
    }
}

显然该代码存在大量bug,不是Armstrong不知道,而是当时未要求ac。

原文地址:https://www.cnblogs.com/leisureeen/p/12882788.html