↵
Hi everyone.↵
↵
I am working on 484A — Bits which should be an easy one. Unfortunately, I am facing a very strange thing that I have never seen before. Hope that someone can help me with it.↵
↵
Below is my code, and the problem is this code gives WA on test 2, line 12th, when the statement a = 0 is after cin >> l >> r, but when I just put the statement a = 0 before cin >> l >> r, it gives WA on test 2, line 11th. However, in both cases, I test on my computer, both code are correct.↵
↵
`↵
↵
~~~~~↵
#include <bits/stdc++.h>↵
using namespace std;↵
#define len(u) (64 — __builtin_clzll(u))↵
↵
int n;↵
int64_t l, r, a, u;↵
↵
int main(){↵
cin >> n;↵
while(n--){↵
cin >> l >> r;↵
a = 0;/*HERE*/↵
while(len(l) == len(r) && r > 0){↵
u = 1 << (len(r) — 1);↵
l-= u, r-= u, a+= u;↵
}↵
u = 1 << (len(r) — 1);↵
u <<= (u + u — 1 == r && r > 1);↵
cout << a+u-1 << "\n";↵
}↵
return 0;↵
}↵
`↵
~~~~~↵
↵
↵
↵
Thank you.
Hi everyone.↵
↵
I am working on 484A — Bits which should be an easy one. Unfortunately, I am facing a very strange thing that I have never seen before. Hope that someone can help me with it.↵
↵
Below is my code, and the problem is this code gives WA on test 2, line 12th, when the statement a = 0 is after cin >> l >> r, but when I just put the statement a = 0 before cin >> l >> r, it gives WA on test 2, line 11th. However, in both cases, I test on my computer, both code are correct.↵
↵
↵
~~~~~↵
#include <bits/stdc++.h>↵
using namespace std;↵
#define len(u) (64 — __builtin_clzll(u))↵
↵
int n;↵
int64_t l, r, a, u;↵
↵
int main(){↵
cin >> n;↵
while(n--){↵
cin >> l >> r;↵
a = 0;/*HERE*/↵
while(len(l) == len(r) && r > 0){↵
u = 1 << (len(r) — 1);↵
l-= u, r-= u, a+= u;↵
}↵
u = 1 << (len(r) — 1);↵
u <<= (u + u — 1 == r && r > 1);↵
cout << a+u-1 << "\n";↵
}↵
return 0;↵
}↵
~~~~~↵
↵
↵
↵
Thank you.