10469 - To Carry or not to Carry

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
    long long int arr[16],arr1[16],arr2[16];
    long long int i,j,k,l,a,b,c,d,mod,mod1,sum;
    while(scanf("%lld%lld",&a,&b)==2)
    {
        memset(arr,0,sizeof(arr));
        memset(arr1,0,sizeof(arr1));
        i=15;
        j=15;
        while(a>0)
        {
            mod=a%2;
            arr[i]=mod;
            i--;
            a=a/2;
        }
        while(b>0)
        {
            mod1=b%2;
            arr1[j]=mod1;
            j--;
            b=b/2;
        }
        for(k=15;k>=0;k--)
        {
            if((arr[k]==1&&arr1[k]==1)||(arr[k]==0&&arr1[k]==0))
            {
                arr2[k]=0;
            }
            else
            {
                arr2[k]=1;
            }
        }
        c=0;
        sum=0;
        for(l=15;l>=0;l--)
        {
            d=arr2[l]*pow(2,c);
            c++;
            sum=sum+d;
        }
        printf("%lld\n",sum);
    }
    return 0;
}

0 comments: (+add yours?)