http://codeforces.com/contest/578/problem/B
参考:https://blog.csdn.net/j6635788/article/details/48980771
代码:
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn=200005;
long long number[maxn];
long long fore[maxn],een[maxn];
int main()
{
int n,k,x;
scanf("%d%d%d",&n,&k,&x);
for(int i=1;i<=n;i++)
scanf("%d",&number[i]);
long long cheng=1;
fore[0]=0;
een[n+1]=0;
for(int i=1;i<=n;i++)
fore[i]=fore[i-1]|number[i];
for(int i=n;i>0;i--)
een[i]=een[i+1]|number[i];
for(int i=0;i<k;i++)
cheng*=x;
long long maxx=-1;
for(int i=1;i<=n;i++)
{
maxx=max(maxx,fore[i-1]|(number[i]*cheng)|een[i+1]);
}
printf("%lld",maxx);
}