为什么黑客地球 - 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 (将#修改为@)