Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- string toBinary(int n)
- {
- string s;
- while(n)
- {
- s.push_back((n%2)+'0');
- n/=2;
- }
- reverse(s.begin(),s.end());
- return s;
- }
- string sum(string a, string b)
- {
- reverse(a.begin(),a.end());
- reverse(b.begin(),b.end());
- while(a.size()!=b.size())
- {
- if(a.size()<b.size())
- a.push_back('0');
- else
- b.push_back(48);
- }
- int carry=0,temp;
- string ans="";
- for(int i=0; i<a.size(); i++)
- {
- temp=(a[i]-48)+(b[i]-48);
- temp+=carry;
- carry=0;
- ans.push_back((temp%2)+48);
- carry=((temp/2)%2);
- }
- //cout<<"carry = "<<carry<<endl;
- while(carry)
- {
- ans.push_back((carry%2)+48);
- carry/=2;
- }
- reverse(ans.begin(),ans.end());
- return ans;
- }
- void multiply(int x, int y)
- {
- string a=toBinary(x);
- string b=toBinary(y);
- //cout<<a<<endl<<b<<endl;
- string val="0", ans="";
- for(int i=b.size()-1,k=0; i>=0; i--,k++)
- {
- val="";
- for(int j=0; j<a.size(); j++)
- {
- val+=((a[j]-48)&(b[i]-48))+48;
- }
- if(ans.empty())
- ans=val;
- else
- {
- for(x=0; x<k; x++)
- val+='0';
- ans=sum(ans,val);
- }
- }
- cout<<ans<<endl;
- }
- int main()
- {
- long long a,b;
- //Enter First Number
- cin>>a;
- //Enter Second Number
- cin>>b;
- multiply(a,b);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement