https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=976
ছোট বেলায় আমরা প্রথম যখন যোগ করা শিখি , তখন আমরা হিসেব করতাম হাতে কত থাকে ?? ধরো , যোগ করতে বললো 555 + 555
তাহলে , ডান দিক থেকে শুরু করি - ৫+৫ =১০ বসাবো ০ , হাতে থাকবে ১
তারপর ৫+৫ = ১০ এর সাথে হাতে থাকা ১ যোগ করলাম তাহলে হলো ১১ বসাবো ১
হাতে থাকলো , আবারো ১ ।
তারপর , ৫+৫=১০ এর সাথে হাতে থাকা ১ যোগ করে পেলাম ১১ , বসাই ১ . আবার হাতে থাকে ১ ।।
আর কোনো , কিছু নাই সুতরাং হাতে থাকা ১ বসিয়ে দেই , তাহলে মোট যোগফল পেলাম ১১১০।
এখন এই যোগ করার সময় হাতে থাকার ঘটনা ঘটলো , মোট ৩ বার সেটাই হবে আমাদের উত্তর ।হাতে থাকার এই ঘটনাকে আমাদের প্রোগ্রামের ভাষায় carry বলে । চলো , কোড দেখি ------------
#include<bits/stdc++.h>
// Nayeem Mollick Joy ,Applied Physics & Electronic Engineering , University of Rajshahi.
using namespace std;
int main()
{
long long int a,b;
while(cin>>a>>b)
{
int carry=0,count=0;
if(a==0&&b==0)
{
break;
}
while(a||b)
{
carry=(a%10+b%10+carry)/10; // শেষ এর ডিজিট গুলো যোগ করছি , সেই জন্য ১০ দিয়ে ভাগ করে ভাগশেষ গুলো যোগ করছি //
a=a/10; // ১ টা করে ডিজিট যোগ করছি , আর - সেটা ১০ দিয়ে ভাগ করলেই যে ভাগফল পাবো , সেটাতে আর শেষ এর ডিজিট'টা থাকছে না , এভাবেই একটা করে ডিজিট কমাতে থাকবো , শেষ এর থেকে //
b=b/10;
if(carry) // হাতে , কিছু আছে কি না ?? সেটা চেক করছি , যদি থাকে -তাহলে count এক করে বাড়তে থাকবে //
{
count++;
}
}
if(count==0)
{
cout<<"No carry operation."<<endl;
}
else if(count==1)
{
cout<<count<<" carry operation."<<endl;
}
else{
cout<<count<<" carry operations."<<endl;
}
}
return 0;
}
ছোট বেলায় আমরা প্রথম যখন যোগ করা শিখি , তখন আমরা হিসেব করতাম হাতে কত থাকে ?? ধরো , যোগ করতে বললো 555 + 555
তাহলে , ডান দিক থেকে শুরু করি - ৫+৫ =১০ বসাবো ০ , হাতে থাকবে ১
তারপর ৫+৫ = ১০ এর সাথে হাতে থাকা ১ যোগ করলাম তাহলে হলো ১১ বসাবো ১
হাতে থাকলো , আবারো ১ ।
তারপর , ৫+৫=১০ এর সাথে হাতে থাকা ১ যোগ করে পেলাম ১১ , বসাই ১ . আবার হাতে থাকে ১ ।।
আর কোনো , কিছু নাই সুতরাং হাতে থাকা ১ বসিয়ে দেই , তাহলে মোট যোগফল পেলাম ১১১০।
এখন এই যোগ করার সময় হাতে থাকার ঘটনা ঘটলো , মোট ৩ বার সেটাই হবে আমাদের উত্তর ।হাতে থাকার এই ঘটনাকে আমাদের প্রোগ্রামের ভাষায় carry বলে । চলো , কোড দেখি ------------
#include<bits/stdc++.h>
// Nayeem Mollick Joy ,Applied Physics & Electronic Engineering , University of Rajshahi.
using namespace std;
int main()
{
long long int a,b;
while(cin>>a>>b)
{
int carry=0,count=0;
if(a==0&&b==0)
{
break;
}
while(a||b)
{
carry=(a%10+b%10+carry)/10; // শেষ এর ডিজিট গুলো যোগ করছি , সেই জন্য ১০ দিয়ে ভাগ করে ভাগশেষ গুলো যোগ করছি //
a=a/10; // ১ টা করে ডিজিট যোগ করছি , আর - সেটা ১০ দিয়ে ভাগ করলেই যে ভাগফল পাবো , সেটাতে আর শেষ এর ডিজিট'টা থাকছে না , এভাবেই একটা করে ডিজিট কমাতে থাকবো , শেষ এর থেকে //
b=b/10;
if(carry) // হাতে , কিছু আছে কি না ?? সেটা চেক করছি , যদি থাকে -তাহলে count এক করে বাড়তে থাকবে //
{
count++;
}
}
if(count==0)
{
cout<<"No carry operation."<<endl;
}
else if(count==1)
{
cout<<count<<" carry operation."<<endl;
}
else{
cout<<count<<" carry operations."<<endl;
}
}
return 0;
}
No comments:
Post a Comment