我没有得到预期的输出

时间:2014-06-30 09:29:52

标签: c

每周独立访客数量与前一周相比增长7%。

给出一个整数N表示本周末唯一身份访问者的数量和整数W

您的任务是:

编写一个函数,打印到标准输出(stdout)W周后我们将拥有的唯一身份访问者数量

请将最终结果向下舍入到最接近的整数(例如,7.1和7.9都舍入为7)

请注意,您的函数将收到以下参数:

  • n:这是一个表示上述数字N的整数
  • w:表示上述数字W的整数

数据限制:

  • n的值不会超过10000
  • w的值不会超过50

样本输入和输出:

  1. n = 10,w = 3

    答案:12

  2. n = 40,w = 1

    答案:42

  3. 我所尝试的内容如下:

    #include "stdio.h"
    #include"math.h"
    
    void compute_prediction(int n, int w)
    {
        //Percentage Calculation
        if(n<100001 && w<51)   
        {  
            double percent= 0.07*n;
            // After 'W' weeks
            double wcalc=(percent*w);
            printf("%d",((int)floor(wcalc))+n);
        } 
    }
    

    给定输入:n = 100,w = 4我的输出是:128。但是正确输出是131。

2 个答案:

答案 0 :(得分:2)

你应该使用geometric series公式:u(n)= u(0)* q ^ n 在你的情况下,它的wcalc = n * 0.07 ^ w

在代码中(我们需要包含pow函数的数学标题):

#include <math.h>

void compute_prediction(int n, int w)   {
    if(n > 100000 || w > 50)
        return;
    double wcalc = n * pow(1.07, w);
    // No need to use floor, a cast is enough
    printf("%ld", (long)wcalc);
}

答案 1 :(得分:1)

在计算过程中,您每周需要100名固定访问者,这是错误的。

正确的方法是:

1st week=100/100*7+100=107
2nd week=7/100*107+107=114
3rd  week=7/100*114+114=122
4th week=(.07)*122+122=131

您将输出为131。