আমাদের দুটি ইন্টিজার num1 এবং num2 দেওয়া আছে। কাজ হল num1 কে num2 দিয়ে ভাগ করে দশমিক বিন্দুর পর কতগুলো ডিজিট আছে তা গণনা করা।
উদাহরণ:
ইনপুট: num1 = 2, num2 = 5 → আউটপুট: count is 1 (2/5 = 0.4, ১টি ডিজিট)
ইনপুট: num1 = 2, num2 = 0 → আউটপুট: Floating point exception
ইনপুট: num1 = 2, num2 = 3 → আউটপুট: Infinite (2/3 = 0.666...)
অ্যালগরিদম
remainder = num1 % num2 বের করুন
যখন remainder != 0: remainder = (remainder * 10) % num2, count++
যদি একই remainder আবার আসে (unordered_map দিয়ে ট্র্যাক), তবে recurring decimal → Infinity রিটার্ন করুন
লুপ শেষ হলে count রিটার্ন করুন
প্রোগ্রাম
#include <iostream>
#include <unordered_map>
using namespace std;
int countdigits(int x, int y) {
int result = 0;
unordered_map mymap;
while (x % y != 0) {
x = x % y;
result++;
if (mymap.find(x) != mymap.end()) return -1; // Infinite
mymap[x] = 1;
x = x * 10;
}
return result;
}
int main() {
int res = countdigits(2, 5);
(res == -1) ? cout << "count is Infinity" : cout << "count is " << res;
return 0;
}
আউটপুট
count is 1