[2020年10月28日普级组]1404.最大异域和

最 大 异 或 和 最大异或和


在这里插入图片描述


题目解析

在这里插入图片描述


Code

#include <cstdio>
#include <iostream>
#define ll long long
using namespace std;

int n;
ll sum, ans, x, f[40];

int main ()
{
	scanf ("%d", &n);
	f[0] = 1;
	for (int i = 1; i <= 30; ++ i)
	     f[i] = f[i - 1] * 2;
	for (int i = 1; i <= n; ++ i)
	{
		scanf ("%lld", &x);
		sum = 0;
		for (int j = 30; j >= 0; j--)
		    if (f[j] && sum + f[j] <= x)
		    {
		    	sum += f[j];
		    	f[j] = 0;
			}
		ans += sum;
	}  
	printf ("%lld", ans);
	return 0;
}
posted @ 2020-10-30 21:47  unknown_future  阅读(50)  评论(0编辑  收藏  举报