मान लीजिए हम दो संख्याओं ए और बी को गुणा करने के बाद परिणाम खोजना चाहते हैं। हमें यह जांचना होगा कि गुणा किया गया मान 64-बिट पूर्णांक से अधिक होगा या नहीं। यदि हम 100, और 200 को गुणा करते हैं, तो यह अधिक नहीं होगा, यदि हम 1000000000 और 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