C 在uva在线判断问题上得到错误答案(问题标签10056)

C 在uva在线判断问题上得到错误答案(问题标签10056),c,C,这是你的电话号码。我不知道为什么uva显示出错误的答案。为了比较,我下载了一个解决方案,并手动尝试了许多测试用例。我的代码给出了相同的答案。问题在哪里 #include<stdio.h> #include<math.h> int main() { int t; scanf("%d", &t); while (t--) { int x, n, a; double b, sum1 = 0, sum3

这是你的电话号码。我不知道为什么uva显示出错误的答案。为了比较,我下载了一个解决方案,并手动尝试了许多测试用例。我的代码给出了相同的答案。问题在哪里

#include<stdio.h>
#include<math.h>

int main()
{
    int t;
    scanf("%d", &t);

    while (t--)
    {
        int x, n, a;
        double b, sum1 = 0, sum3 = 0;
        scanf("%d %lf %d", &n, &b, &a);

        if (b > 0) {
            x = a - 1;

            double re = (pow(1 - b, x) * b) / (1 - ((pow(1 - b, x + n) * b) / (pow(1 - b, x) * b)));
            printf("%.4lf\n", re);
        }
        else
        {
            printf("0.0000\n");
        }
    }
}
#包括
#包括
int main()
{
int t;
scanf(“%d”、&t);
而(t--)
{
int x,n,a;
双b,sum1=0,sum3=0;
scanf(“%d%lf%d”,&n,&b,&a);
如果(b>0){
x=a-1;
双re=(pow(1-b,x)*b)/(1-((pow(1-b,x+n)*b)/(pow(1-b,x)*b));
printf(“%.4lf\n”,re);
}
其他的
{
printf(“0.0000\n”);
}
}
}

尝试在结尾处
返回0
。有一个惯例,如果一个程序没有错误,它会在最后返回0。一些验证软件通过查看代码的返回值来检查代码是否已成功运行。

尝试在结尾处
返回0
。有一个惯例,如果一个程序没有错误,它会在最后返回0。一些验证软件通过查看代码的返回值来检查代码是否已成功运行。

信息:

pow( doubleValue, 0 ) = 1
pow( doubleValue, 1 ) = doubleValue
表达方式:

pow(1-probableWin,x ) 
其中
x
为1-1=0(每个代码的第一个播放器)

其中
x
为1,结果为1-probableWin(我对第一名玩家的想法)

将上述值乘以:

*probableWin 
如果
x
为0,则每个OPs代码的结果为0

*probableWin  
如果
x
为1,则会产生(1-probableWin)*probableWin,这会更好

建议使用调试器并遍历代码,以确定哪里出了问题

顺便说一句:强烈建议将长时间计算的
re
分解为(比如)4或5条语句,以便您可以看到每个表达式的结果。

信息:

pow( doubleValue, 0 ) = 1
pow( doubleValue, 1 ) = doubleValue
表达方式:

pow(1-probableWin,x ) 
其中
x
为1-1=0(每个代码的第一个播放器)

其中
x
为1,结果为1-probableWin(我对第一名玩家的想法)

将上述值乘以:

*probableWin 
如果
x
为0,则每个OPs代码的结果为0

*probableWin  
如果
x
为1,则会产生(1-probableWin)*probableWin,这会更好

建议使用调试器并遍历代码,以确定哪里出了问题


顺便说一句:强烈建议将长时间的
re
计算分解为(比如)4或5条语句,这样您就可以看到每个表达式的结果。

如果您知道确切的输入,您可以使用调试器逐步检查您的代码,找出何时何地以及为什么会得到错误的结果。但是,对于良好的调试,如果您有良好的习惯,比如为变量使用语义和描述性名称,不创建长而复杂的单行语句或表达式,在代码中有良好的文档和注释,不仅说明您正在做什么,而且说明原因,这也会有所帮助。在线评委/竞赛网站不会教你的好习惯(他们倾向于做相反的事,积极宣传坏习惯),也请尝试通过将“作业”文本复制粘贴到问题本身,使你的问题独立。链接可能会过时、消失或内容可能会更改。如果您知道确切的输入,可以使用调试器逐步检查代码,找出何时何地以及为什么会得到错误的结果。但是,对于良好的调试,如果您有良好的习惯,比如为变量使用语义和描述性名称,不创建长而复杂的单行语句或表达式,在代码中有良好的文档和注释,不仅说明您正在做什么,而且说明原因,这也会有所帮助。在线评委/竞赛网站不会教你的好习惯(他们倾向于做相反的事,积极宣传坏习惯),也请尝试通过将“作业”文本复制粘贴到问题本身,使你的问题独立。链接可能会过时、消失或其内容可能会更改是隐式的。那么多年来我一直在每个程序中浪费一行代码!谢谢你提供的信息。维基百科的文章说C语言的用户解决方案应该是C89。自C99标准以来,该结尾
返回0是隐式的。那么多年来我一直在每个程序中浪费一行代码!谢谢你提供的信息。维基百科的文章说C语言的用户解决方案应该是C89。