দুটি ইন্টিজার A এবং B এবং একটি সংখ্যা X দেওয়া আছে। লক্ষ্য হলো X-এর সادات সম্ভাব্য মানগুলোর সংখ্যা বের করা যাতে A % X = B। এই সমীকরণের জন্য যদি A == B হয়, তবে X-এর অসংখ্য মান সম্ভব, তাই -১ রিটার্ন করুন। যদি A < B হয়, তবে কোনো সমাধান নেই, তাই ০ রিটার্ন করুন। যদি A > B হয়, তবে (A-B)-এর ভাজকগুলোর সংখ্যা রিটার্ন করুন।
উদাহরণ ১
ইনপুট
A=5, B=2
আউটপুট
A % X = B সমীকরণ সন্তুষ্টকারী X এর সম্ভাব্য মানগুলোর সংখ্যা: 1
ব্যাখ্যা
5%3=2। তাই এখানে X হলো 3।
উদাহরণ ২
ইনপুট
A=10, B=10
আউটপুট
A % X = B সমীকরণ সন্তুষ্টকারী X এর সম্ভাব্য মানগুলোর সংখ্যা: -1
ব্যাখ্যা
এখানে A==B তাই অসংখ্য সমাধান আছে, তাই -1 রিটার্ন করা হয়েছে।
প্রয়োগ করা পদ্ধতি
এই পদ্ধতিতে (A-B)-এর ভাজকগুলো for লুপ দিয়ে i=1 থেকে i*i <= (A-B) পর্যন্ত গণনা করা হয়। যদি কোনো i পুরোপুরি (A-B)-কে ভাগ করে, তবে কাউন্ট соответствуюően আপডেট করা হয়।
ইনপুট হিসেবে ইন্টিজার
AএবংBনিন।যদি
A < Bহয় তবে ০ প্রিন্ট করুন।যদি
A == Bহয় তবে -১ প্রিন্ট করুন।A > Bহলেpossible_values(int A, int B)ফাংশনটি কল করুন।আরম্ভিক কাউন্ট ০ এবং
X = A - Bনিন।forলুপ দিয়েi=1থেকেi*i <= (A-B)পর্যন্ত ট্রুভার্স করুনX-এর ভাজক বের করতে।যদি কোনো
iপুরোপুরিX-কে ভাগ করে, তবেtemp = i,temp_2 = B - 1নিন এবং যদিi*i != Xহয় তবেtemp_2 = X / iসেট করুন।যদি
temp > Bএবংtemp_2 > Bহয় তবে কাউন্ট বাড়ান।লুপ শেষে কাউন্ট রিটার্ন করুন ফলাফল হিসেবে।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int possible_values(int A, int B) {
int count = 0;
int X = A - B;
for (int i = 1; i * i <= A - B; i++) {
if(X % i == 0) {
int temp = i;
int temp_2 = B - 1;
if(i * i != X) {
temp_2 = X / i;
}
if(temp > B) { count++; }
if(temp_2 > B) { count++; }
}
}
return count;
}
int main() {
int A = 15, B = 5;
if(A < B) {
cout << "A % X = B সমীকরণ সন্তুষ্টকারী X এর সম্ভাব্য মানগুলোর সংখ্যা: " << 0;
} else if(A == B) {
cout << "A % X = B সমীকরণ সন্তুষ্টকারী X এর সম্ভাব্য মানগুলোর সংখ্যা: " << -1;
} else {
cout << "A % X = B সমীকরণ সন্তুষ্টকারী X এর সম্ভাব্য মানগুলোর সংখ্যা: " << possible_values(A, B);
}
return 0;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:
A % X = B সমীকরণ সন্তুষ্টকারী X এর সম্ভাব্য মানগুলোর সংখ্যা: 1