ধরুন আমরা A এবং B দুটি সংখ্যাকে গুণ করার পর ফলাফল বের করতে চাই। গুণিত মানটি 64-বিট পূর্ণসংখ্যা অতিক্রম করবে কি না তা আমাদের পরীক্ষা করতে হবে। যদি আমরা 100, এবং 200 গুন করি, এটি অতিক্রম করবে না, যদি আমরা 10000000000 এবং -10000000000 গুন করি তবে এটি উপচে পড়বে৷
এটি পরীক্ষা করার জন্য, আমাদের কিছু পদক্ষেপ অনুসরণ করতে হবে। এগুলো নিচের মত -
পদক্ষেপ −
-
সংখ্যার কেউ যদি 0 হয়, তাহলে তা অতিক্রম করবে না
-
অন্যথায়, যদি একটি দ্বারা দুই ভাগের গুণফল অন্যটির সমান হয়, তাহলে তা অতিক্রম করবে না
-
অন্য কিছু ক্ষেত্রে, এটি অতিক্রম করবে৷
৷
উদাহরণ
#include <iostream>
#include <cmath>
using namespace std;
bool isMulOverflow(long long A, long long B) {
if (A == 0 || B == 0)
return false;
long long result = A * B;
if (A == result / B)
return false;
else
return true;
}
int main() {
long long a = 10000000000 , b = -10000000000;
if(isMulOverflow(a, b)){
cout <<"It will overflow";
}
else{
cout <<"It will not overflow";
}
} আউটপুট
It will overflow