Codechef总费用

时间:2015-12-05 17:09:10

标签: c algorithm

我使用以下代码在https://www.codechef.com/problems/FLOW009

解决问题
#include <stdio.h>

int main(int argc, char const *argv[])
{
    int T;
    float quantity, price, tex;
    scanf("%d", &T);

    while(T--)
    {
        scanf("%f %f", &quantity, &price);

        tex = quantity * price;
        if (quantity > 1000)
            tex = tex - (tex * 0.1);

        printf("%.6f\n", tex);
    }

    return 0;
}

我不知道为什么这一直给我错误的答案。

我尝试更改数据类型。

int main(int argc, char const *argv[])
{
    int T, quantity, price;
    float tex;
    scanf("%d", &T);

    while(T--)
    {
        scanf("%d %d", &quantity, &price);

        tex = quantity * price;
        if (quantity > 1000)
            tex -= (tex * 0.1);

        printf("%.6f\n", tex);
    }

    return 0;
}

但这也给出了错误的答案。

3 个答案:

答案 0 :(得分:4)

在问题中,声明包括数量和价格在内的所有输入都是整数。您已将它们声明为浮动,这可以更改您的数量大于1000的输入的一些答案,如下所示:

1
1001 8
7207.200195 (your ans, correct = 7207.200000)

由于浮点值。修改后的代码如下所示

#include <stdio.h>

int main(int argc, char const *argv[])
{
    int test, qty, price;
    double total;

    scanf("%d", &test);

    while(test--)
    {
        scanf("%d %d", &qty, &price);

        total = qty * price;

        if (qty > 1000)
            total -= ((total * 10.0)/100.0);

        printf("%.6lf\n", total);
    }

    return 0;
}

答案 1 :(得分:1)

您不必在每个输入集后提供输出。这就是你的答案被拒绝的原因。将输出存储在一个数组中,最后打印出来。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
    int T, quantity, price, i;
    double *tex = NULL;
    scanf("%d", &T);

    tex = (double *)malloc(sizeof(double) * T);

    for(i=0; i<T; i++)
    {                                 
        scanf("%d %d", &quantity, &price);

        tex[i] = (float)(quantity * price);
        if (quantity > 1000)        
            tex[i] -= (tex[i] * 0.1);

    }                     

    for(i=0; i<T; i++)
        printf("%.6lf\n", tex[i]);

    return 0;
}        

答案 2 :(得分:0)

iomanip 头文件中有一个名为 setprecision() 的函数,它允许您设置要获得结果的小数位数。打印最后一位需要你写这样的语句 -

cout<<fixed<<setprecision(6)<<total<<endl;