您的位置:首页 > 其它

Codeforces Round #262 (Div. 2)

2014-08-22 14:27 274 查看
A

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
using namespace std;
#define N 100000
#define LL long long
#define INF 0xfffffff
const double eps = 1e-8;
const double pi = acos(-1.0);
const double inf = ~0u>>2;
LL a[10];
int di[50];
void judge(LL l,LL r)
{
LL x = r;
LL i;
int g = 0;
while(x)
{
di[g++] = x%2;
x/=2;
}
LL y = 0;
LL z = 0;
int flag = 0;
y+=((LL)1<<(g-1));
for(i = g-2 ; i >= 0 ; i--)
{
if(di[i])
{
flag = 1;
z += ((LL)1<<i);
}
else if(flag)
{
z+=((LL)1<<i);
y+=((LL)1<<i);
}
}
if(z>=l)
{
cout<<"0\n";
cout<<"3\n";
cout<<r<<" "<<y<<" "<<z<<endl;
}
else
{
cout<<"1\n";
cout<<"2\n";
if(l%2)
cout<<l+1<<" "<<l+2<<endl;
else
cout<<l<<" "<<l+1<<endl;
}
}
int main()
{
LL l,r,i,k;
cin>>l>>r>>k;
if(r==l)
{
cout<<l<<endl;
cout<<"1\n";
cout<<l<<endl;
return 0;
}
if(l%2==0)
{
if(r-l+1==2||k<=2)
{
if(k==1)
{
cout<<l<<endl;
cout<<"1\n";
cout<<l<<endl;
}
else
{
cout<<"1\n";
cout<<"2\n";
cout<<l<<" "<<l+1<<endl;
}
}
else if(r-l+1==3||k==3)
{
judge(l,r);
}
else
{
cout<<"0\n";
cout<<"4\n";
for(i = l  ; i < l + 4 ; i++)
cout<<i<<" ";
puts("");
}
}
else
{
if(r-l+1==2||k<=2)
{
if(k==1||(r-l+1==2&&(l^(l+1))>l))
{
cout<<l<<endl;
cout<<"1\n";
cout<<l<<endl;
}
else
{
if(r-l+1==2)
{
cout<<(l^(l+1))<<endl;
cout<<"2\n";
cout<<l<<" "<<l+1<<endl;
}
else
{
cout<<"1\n";
cout<<"2\n";
cout<<l+1<<" "<<l+2<<endl;
}
}
}
else if(r-l+1==3||k==3)
{
judge(l,r);
}
else if(r-l+1==4)
{
int flag = 0;
judge(l,r);
}
else
{
cout<<"0\n";
cout<<"4\n";
for(i = l+1 ; i < l+5 ; i++)
cout<<i<<" ";
puts("");
}

}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: