水题。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#define inf 0x7f7f7f7f
#define maxn 100005
#define ll long long
#define mod 1000000007
using namespace std;
int main(){
ll a,b;
ll x,y,z;
while(cin>>a>>b){
ll ans;
ll ans1;
ll sum=0;
cin>>x>>y>>z;
ans=x*2+y;
ans1=y+z*3;
if(ans>a) sum+=ans-a;
if(ans1>b) sum+=ans1-b;
cout<<sum<<endl;
}
return 0;
}
Since Grisha behaved well last year, at New Year's Eve he was visited by Ded Moroz who brought an enormous bag of gifts with him! The bag contains n sweet candies from the good ol' bakery, each labeled from 1 to n corresponding to its tastiness. No two candies have the same tastiness.
The choice of candies has a direct effect on Grisha's happiness. One can assume that he should take the tastiest ones — but no, the holiday magic turns things upside down. It is the xor-sum of tastinesses that matters, not the ordinary sum!
A xor-sum of a sequence of integers a1, a2, ..., am is defined as the bitwise XOR of all its elements: , here
denotes the bitwise XOR operation; more about bitwise XOR can be found here.
Ded Moroz warned Grisha he has more houses to visit, so Grisha can take no more than k candies from the bag. Help Grisha determine the largest xor-sum (largest xor-sum means maximum happiness!) he can obtain.
The sole string contains two integers n and k (1 ≤ k ≤ n ≤ 1018).
Output one number — the largest possible xor-sum.
4 3
7
6 6
7
In the first sample case, one optimal answer is 1, 2 and 4, giving the xor-sum of 7.
In the second sample case, one can, for example, take all six candies and obtain the xor-sum of 7.
思路:一直没搞明白。。。但是A了,大概是1-n求m个数使得异或最大
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#define inf 0x7f7f7f7f
#define maxn 100005
#define ll long long
#define mod 1000000007
using namespace std;
ll f[100],n,m;
int main()
{
f[0]=1;
for(int i=1;i<=62;i++)
{
f[i]=f[i-1]*2;
}
cin>>n>>m;
if(m==1)
cout<<n<<endl;
else
{
for(int i=62;i>=0;i--)
{
if(f[i]<=n)
{
cout<<f[i+1]-1<<endl;
return 0;
}
}
}
}