#include <stdio.h>
void square_root_recursive(int n, int low, int high)
{
if(low>high)
{
printf("NOT A PERFECT SQUARE NUMBER!\n"); return;
}
int mid = (low + high) / 2;
if(mid*mid == n)
{
return;
}
else if(mid * mid > n)
{
square_root_recursive(n, low, mid - 1);
}
else
{
square_root_recursive(n, mid + 1, high);
}
}
void square_root(int n)
{
int low = 1;
int high = n;
while(low<=high)
{
int mid = (low + high) / 2;
if(mid*mid == n)
{
return;
}
else if(mid*mid > n)
{
high = mid - 1;
}
else
{
low = mid + 1;
}
}
printf("NOT A PERFECT SQUARE NUMBER!\n"); }
int main()
{
square_root_recursive(120, 1, 120);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIHNxdWFyZV9yb290X3JlY3Vyc2l2ZShpbnQgbiwgaW50IGxvdywgaW50IGhpZ2gpCnsKICAgIGlmKGxvdz5oaWdoKQogICAgewogICAgICAgIHByaW50ZigiTk9UIEEgUEVSRkVDVCBTUVVBUkUgTlVNQkVSIVxuIik7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICBpbnQgbWlkID0gKGxvdyArIGhpZ2gpIC8gMjsKICAgIAogICAgaWYobWlkKm1pZCA9PSBuKQogICAgewogICAgICAgIHByaW50ZigiJWRcbiIsIG1pZCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZWxzZSBpZihtaWQgKiBtaWQgPiBuKQogICAgewogICAgICAgIHNxdWFyZV9yb290X3JlY3Vyc2l2ZShuLCBsb3csIG1pZCAtIDEpOwogICAgfQogICAgZWxzZSAKICAgIHsKICAgICAgICBzcXVhcmVfcm9vdF9yZWN1cnNpdmUobiwgbWlkICsgMSwgaGlnaCk7CiAgICB9Cn0KCnZvaWQgc3F1YXJlX3Jvb3QoaW50IG4pCnsKICAgIGludCBsb3cgPSAxOwogICAgaW50IGhpZ2ggPSBuOwogICAgCiAgICB3aGlsZShsb3c8PWhpZ2gpCiAgICB7CiAgICAgICAgaW50IG1pZCA9IChsb3cgKyBoaWdoKSAvIDI7CiAgICAgICAgaWYobWlkKm1pZCA9PSBuKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCIlZFxuIiwgbWlkKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKG1pZCptaWQgPiBuKQogICAgICAgIHsKICAgICAgICAgICAgaGlnaCA9IG1pZCAtIDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgCiAgICAgICAgewogICAgICAgICAgICBsb3cgPSBtaWQgKyAxOwogICAgICAgIH0KICAgIH0KICAgIAogICAgcHJpbnRmKCJOT1QgQSBQRVJGRUNUIFNRVUFSRSBOVU1CRVIhXG4iKTsKfQoKCmludCBtYWluKCkKewogICAgc3F1YXJlX3Jvb3RfcmVjdXJzaXZlKDEyMCwgMSwgMTIwKTsKCiAgICByZXR1cm4gMDsKfQ==