#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
typedef unsigned long u32;
typedef unsigned long long u64;
u64 bst(u32 s, u32 e, u64 target)
{
u64 m;
u64 upper;
u64 lower;
// printf("%u %u\n", s, e);
//if (target == 0) {
// return 0;
//}
if (s > e) {
return 0;
}
m = ((u64)s + (u64)e) / 2;
lower = (u64)(m - 1) * (u64)(m - 1);
upper = (u64)m * (u64)m;
if (lower> target) {
return bst(s, m - 1, target);
}
else if (upper<target) {
return bst(m + 1, e, target);
}
else if (upper > target && lower == target) {
return (m-1);
}
else {
return m;
}
}
int main()
{
u64 l;
u64 r;
u64 lresult;
u64 rresult;
u64 temp = ((u64)1024 * (u64)1024 * (u64)1024 * (u64)4) -1;
u64 final_result;
scanf("%lld lld", &l
, &r
); //l = 1; r = 16;
lresult = bst(0, (u32)temp, l);
rresult = bst(0, (u32)temp, r);
if ((rresult* rresult) > r) {
rresult--; // last value
}
if (lresult == 1) {
lresult++;
}
final_result = (r - l +1) -(rresult - lresult +1);
if (l == 1) {
final_result--;
}
printf("%lld\n", final_result
); return 0;
}
I2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUwojaW5jbHVkZTxzdGRpby5oPgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Cgp1NjQgYnN0KHUzMiBzLCB1MzIgZSwgdTY0IHRhcmdldCkKewoJdTY0IG07Cgl1NjQgdXBwZXI7Cgl1NjQgbG93ZXI7CgoJLy8JcHJpbnRmKCIldSAldVxuIiwgcywgZSk7CgoJLy9pZiAodGFyZ2V0ID09IDApIHsKCS8vCXJldHVybiAwOwoJLy99CgoJaWYgKHMgPiBlKSB7CgkJcmV0dXJuIDA7Cgl9CgoJbSA9ICgodTY0KXMgKyAodTY0KWUpIC8gMjsKCgoJbG93ZXIgPSAodTY0KShtIC0gMSkgKiAodTY0KShtIC0gMSk7Cgl1cHBlciA9ICh1NjQpbSAqICh1NjQpbTsKCglpZiAobG93ZXI+IHRhcmdldCkgewoJCXJldHVybiBic3QocywgbSAtIDEsIHRhcmdldCk7Cgl9CgllbHNlIGlmICh1cHBlcjx0YXJnZXQpIHsKCQlyZXR1cm4gYnN0KG0gKyAxLCBlLCB0YXJnZXQpOwoJfQoJZWxzZSBpZiAodXBwZXIgPiB0YXJnZXQgJiYgbG93ZXIgPT0gdGFyZ2V0KSB7CgkJcmV0dXJuIChtLTEpOwoJfQoJZWxzZSB7CgkJcmV0dXJuIG07Cgl9Cn0KCmludCBtYWluKCkKewoJdTY0IGw7Cgl1NjQgcjsKCXU2NCBscmVzdWx0OwoJdTY0IHJyZXN1bHQ7Cgl1NjQgdGVtcCA9ICgodTY0KTEwMjQgKiAodTY0KTEwMjQgKiAodTY0KTEwMjQgKiAodTY0KTQpIC0xOwoJdTY0IGZpbmFsX3Jlc3VsdDsKCglzY2FuZigiJWxsZCBsbGQiLCAmbCwgJnIpOwoJLy9sID0gMTsJciA9IDE2OwoJbHJlc3VsdCA9IGJzdCgwLCAodTMyKXRlbXAsIGwpOwoJcnJlc3VsdCA9IGJzdCgwLCAodTMyKXRlbXAsIHIpOwoJCglpZiAoKHJyZXN1bHQqIHJyZXN1bHQpID4gcikgewoJCXJyZXN1bHQtLTsgLy8gbGFzdCB2YWx1ZQoJfQoJaWYgKGxyZXN1bHQgPT0gMSkgewoJCWxyZXN1bHQrKzsKCX0KCgoJZmluYWxfcmVzdWx0ID0gKHIgLSBsICsxKSAtKHJyZXN1bHQgLSBscmVzdWx0ICsxKTsKCWlmIChsID09IDEpIHsKCQlmaW5hbF9yZXN1bHQtLTsKCX0KCglwcmludGYoIiVsbGRcbiIsIGZpbmFsX3Jlc3VsdCk7CglyZXR1cm4gMDsKfQ==