소 토끼 구간 비밀번호

토끼 구간 비밀번호
시간 제한: C / C + + 1 초, 기타 언어 2 초 공간 제한: C / C + + 32768 K, 기타 언어 65536 K 64bit IO 포맷:% lld
제목 설명
귀여운 토끼 한 마리 가 밀실 에 갇 혔 습 니 다. 밀실 에는 두 개의 숫자 가 있 고 또 한 줄 의 글자 가 있 습 니 다. 비밀 번 호 를 풀 어야 나 갈 수 있 습 니 다.귀여운 토끼 가 한참 을 더 듬 어 보 니 밀실 안의 두 숫자 는 한 구간 [L, R] 을 나타 내 는 것 이 고 비밀 번 호 는 이 구간 에서 두 개의 (같은 것 이 가능 한) 정 수 를 임의로 선택 한 후 이동 하거나 최대 치 였 다.예 를 들 어 구간 [2, 5] 을 주면 23, 45 가 있 는데 그 중에서 2 xor 5 = 7 이 가장 크 기 때문에 비밀 번 호 는 7 이다.토끼 는 즉시 밀실 문 을 풀 었 는데 문 밖 에 문 이 하나 있 고 숫자 가 점점 커지 는 것 을 발 견 했 습 니 다. 토끼 는 어 쩔 수 없 었 습 니 다. 그래서 도움 을 청 하 러 왔 습 니 다.알림: 이 진 다음 자리 에서 비교 하거나 같 으 면 0 이 다 르 면 1 예 를 들 어 2 = (010) 22 = (010) 25 = (101) 25 = (101) 2 그래서 2 xor 5 = (111) 2 = 75 = (111) 2 = 7
입력 설명:
       T,      。
    T  ,      L,R,     [L,R]。

출력 설명:
   T       ,  [L,R]   。

예시 1
입력
복제 하 다.
5
1 10
2 3
3 4
5 5
2 5

출력
복제 하 다.
15
1
7
0
7

비고:
  30%    
1  ≤ T ≤ 10 
0 ≤ L ≤ R ≤ 100
    10%    
L=R
  70%    
1 ≤ T ≤ 10 
0 ≤ L ≤ R ≤ 50000
  100%    
1 ≤ T ≤ 10000 
0 ≤ L ≤ R ≤ 1018
(  100%   )       ,       。

방법 1:
#include
using namespace std;
long long a[65],l,r,sum,ans; 
int main()
{
	a[0]=1;
	a[1]=3;
	for(int i=2;i<=60;i++)
	a[i]=a[i-1]*2+1;
	int t;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%lld %lld",&l,&r);
		if(l==r) printf("0
"); else if(l%2==0&&l+1==r) cout<=a[i]&&l<=a[i+1]) { sum=i+1; break; } } for(int i=0;;i++) { if(r>=a[i]&&r<=a[i+1]) { ans=i+1; break; } } if(ans!=sum) cout<=r) { y=mid; } else { long long q=mid^(mid+1); cout<

방법 2:
#include
using namespace std;
long long int t,l,r,ans;
int main()
{
	scanf("%lld",&t);
	while(t--)
	{
		scanf("%lld %lld",&l,&r);
		long long int x=l^r;
		ans=0;
		while(x)
		{
			ans=ans*2+1;
			x/=2;
		}
		printf("%lld
",ans); } return 0; }

 

좋은 웹페이지 즐겨찾기