微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么黑客地球 - Charged up Array一个代码被接受而另一个代码产生错误答案

如何解决为什么黑客地球 - Charged up Array一个代码被接受而另一个代码产生错误答案

我正在尝试解决来自在线评委 Hacker Earth 的 Charged Up Array 问题。 https://www.hackerearth.com/practice/data-structures/arrays/1-d/practice-problems/algorithm/charged-up-array-f35a5e23/
我想出了解决方案并为该问题编写了几乎相同的两种不同代码一个是:

#include<stdio.h>
#include<math.h>
using namespace std;
int main()
{
    int T,n,i;
    long long int subset_Containg_Ai,x,sum;
    scanf("%d",&T);
    while(T--)
    {
            sum = 0;
            scanf("%d",&n);
            //subset_Containg_Ai = (long long int)pow(2,(n-1));
            //printf("Subset = %d\n",subset_Containg_Ai);
            for(i=0; i<n; i++)
            {
                scanf("%lld",&x);
                if(x>= pow(2,(n-1)))
                {
                    sum = (sum + x ) % 1000000007;
                }
            }

            printf("%lld\n",sum);
    }

    return 0;
}


代码在判断服务器中被接受。 但这是我代码的另一个版本

#include<stdio.h>
#include<math.h>
using namespace std;
int main()
{
    int T,&n);
            subset_Containg_Ai = (long long int)pow(2,&x);
                if(x>=subset_Containg_Ai)
                {
                    sum = (sum + x ) % 1000000007;
                }
            }

            printf("%lld\n",sum);
    }

    return 0;
}


在第二个代码中,我使用了一个额外的变量“subset_Containg_Ai”,并使用它与变量“x”进行比较,而不是每次都调用函数 pow。我认为这会提高代码的效率。相反,这第二个代码被法官显示为“错误答案”!谁能告诉我这里发生了什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。