- 虽然结论是二项式系数,但你倒也不必真的去求二项式系数,直接模拟不好吗……
- \(C_{50}^{25}\)的计算结果仍在long long范围内,而且离上限尚有一段距离
0000126410606437752
9223372036854775807
#include <bits/stdc++.h>
using namespace std;
int a[2][55];
long long c[50][50];
long long calc(int m,int opt)
{
long long sum=0,sgn=1;
if(m%2&&!opt)
{
sgn=-1;
}
for(int i=0;i<=m;i++)
{
sum=sum+c[m][i]*a[opt][i]*sgn;
sgn*=(-1);
}
return sum;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
c[0][0]=c[1][0]=c[1][1]=1;
for(int i=2;i<50;i++)
{
for(int j=0;j<=i;j++)
{
c[i][j]=c[i-1][j]+c[i-1][j-1];
}
}
int T;
cin>>T;
while(T--)
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[0][i];
a[1][i]=a[0][i];
}
reverse(a[1],a[1]+n);
long long ans=accumulate(a[0],a[0]+n,0);
for(int i=0;i<n-1;i++)
{
long long l=calc(i,0),r=calc(i,1);
ans=max(ans,max(l-r,r-l));
}
cout<<ans<<"\n";
}
return 0;
}