Problem Link : uva 10106 - Product
আগে একটা গুন দেখে নেই_
১২৩
১২৩
৩৬৯
২৪৬০
১২৩০০
১৫১২৯
এতাকেই আমরা programming এর ভাষায় এভাবে করব_
Seep 1:
১২৩ + ১২৩ + ১২৩
৩ ২ ১
৩৬৯ ২৪৬ ১২৩
Step 2:
প্রথম গুন ফল এর সঙ্গে ০ টা ০
২য় গুন ফল এর সঙ্গে ১ টা ০
৩য় গুন ফল এর সঙ্গে ২ টা ০ নিয়ে যোগ করি_
৩৬৯
২৪৬০
১২৩০০
১৫১২৯
এবার এপার টা এক্তু খেয়াল করি_.
১) ৩*৩ করে গুন করে প্রথম এ বসালাম ৯
অর্থাৎ ০ নং পজিশনএর ৩, ০ নং পজিশন এর ৩ এর সঙ্গে গুন করে ০+০ নং পজিশন এ বসাই
২) ২*৩ করে গুন করে এবারএ বসালাম ৬
অর্থাৎ ১ নং পজিশনএর ২ , ০ নং পজিশন এর ৩ এর সঙ্গে গুন করে ১+০ নং পজিশন এ বসাই
৩) ১*৩ করে গুন করে এবারএ বসালাম ৩
অর্থাৎ ২নং পজিশনএর ১, ০ নং পজিশন এর ৩ এর সঙ্গে গুন করে ২+০ নং পজিশন এ বসাই
৪) ৩*২করে গুন করে এবারএ বসালাম ৬+৬
অর্থাৎ ০ নং পজিশনএর ৩, ১নং পজিশন এর ২এর সঙ্গে গুন করে ০+১ নং পজিশন এ বসাইআগে যা এক নং ১ নংএ ছিল তা যোগ করি অর্থাৎ ৬+৬
এভাবে চলতে থাকবে_
Example: er[i+j]+=cr[i]*dr[j];
Uva 10106 - Product code:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char ar[300],br[300];
long long i,cr[300],l1,l2,dr[300],l,j;
while(cin>>ar>>br)
{
long long er[600]={0};
l1=strlen(ar);
l2=strlen(br);
for(i=l1-1;i>=0;i--)
cr[l1-1-i]=ar[i]-'0';
for(i=l2-1;i>=0;i--)
dr[l2-1-i]=br[i]-'0';
for(i=0;i<l1;i++)
{
for(j=0;j<l2;j++)
{
er[i+j]+=cr[i]*dr[j];
er[i+j+1]+=er[i+j]/10;
er[i+j]%=10;
// cout<<er[i+j]<<" "<<er[i+j+1]<<endl;
}
}
l=l1+l2;
while(er[l]==0&&l>0)
l--;
for(i=l;i>=0;i--)
cout<<er[i];
cout<<endl;
}
return 0;
}
আগে একটা গুন দেখে নেই_
১২৩
১২৩
৩৬৯
২৪৬০
১২৩০০
১৫১২৯
এতাকেই আমরা programming এর ভাষায় এভাবে করব_
Seep 1:
১২৩ + ১২৩ + ১২৩
৩ ২ ১
৩৬৯ ২৪৬ ১২৩
Step 2:
প্রথম গুন ফল এর সঙ্গে ০ টা ০
২য় গুন ফল এর সঙ্গে ১ টা ০
৩য় গুন ফল এর সঙ্গে ২ টা ০ নিয়ে যোগ করি_
৩৬৯
২৪৬০
১২৩০০
১৫১২৯
এবার এপার টা এক্তু খেয়াল করি_.
১) ৩*৩ করে গুন করে প্রথম এ বসালাম ৯
অর্থাৎ ০ নং পজিশনএর ৩, ০ নং পজিশন এর ৩ এর সঙ্গে গুন করে ০+০ নং পজিশন এ বসাই
২) ২*৩ করে গুন করে এবারএ বসালাম ৬
অর্থাৎ ১ নং পজিশনএর ২ , ০ নং পজিশন এর ৩ এর সঙ্গে গুন করে ১+০ নং পজিশন এ বসাই
৩) ১*৩ করে গুন করে এবারএ বসালাম ৩
অর্থাৎ ২নং পজিশনএর ১, ০ নং পজিশন এর ৩ এর সঙ্গে গুন করে ২+০ নং পজিশন এ বসাই
৪) ৩*২করে গুন করে এবারএ বসালাম ৬+৬
অর্থাৎ ০ নং পজিশনএর ৩, ১নং পজিশন এর ২এর সঙ্গে গুন করে ০+১ নং পজিশন এ বসাইআগে যা এক নং ১ নংএ ছিল তা যোগ করি অর্থাৎ ৬+৬
এভাবে চলতে থাকবে_
Example: er[i+j]+=cr[i]*dr[j];
Uva 10106 - Product code:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char ar[300],br[300];
long long i,cr[300],l1,l2,dr[300],l,j;
while(cin>>ar>>br)
{
long long er[600]={0};
l1=strlen(ar);
l2=strlen(br);
for(i=l1-1;i>=0;i--)
cr[l1-1-i]=ar[i]-'0';
for(i=l2-1;i>=0;i--)
dr[l2-1-i]=br[i]-'0';
for(i=0;i<l1;i++)
{
for(j=0;j<l2;j++)
{
er[i+j]+=cr[i]*dr[j];
er[i+j+1]+=er[i+j]/10;
er[i+j]%=10;
// cout<<er[i+j]<<" "<<er[i+j+1]<<endl;
}
}
l=l1+l2;
while(er[l]==0&&l>0)
l--;
for(i=l;i>=0;i--)
cout<<er[i];
cout<<endl;
}
return 0;
}
No comments:
Post a Comment