algorithm:

if any number(a) is divisible by 5 it can be wriiten as 4*b + b -->
this cleary shows the last two bit of a & b will be same.

lets understand by an example (35)10 = (100011)2

 xx1100
+   xx11
---------
 100011

now this clearly shows we can calculate the unknowns(x) by traversing
right to left

code:

int main()
{
        int n, m;
        cin >> n;
        m = n;

        int a, b;
        int i=2;

        a = (m&3)<<2;
        b = (m&3);
        m >>= 2;

        bool rem = 0,s,r;

        while (m>3)
        {
                r = a&(1<<i);
                s = r^(m&1)^rem;
                b = b|(s<<i);
                a = a|(s<<(i+2));
                rem = (r&s)|(s&rem)|(r&rem) ;
                i++;
                m >>= 1;
        }

        if (a+b == n) cout << "yes\n";
        else cout << "no\n";

        return 0;
}

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to