দুটি পূর্ণসংখ্যা A এবং B এবং একটি সংখ্যা X দেওয়া হয়েছে। লক্ষ্য হল X-এর মানের গণনা খুঁজে বের করা যাতে A%X=B। উপরের সমীকরণের জন্য যদি, A==B তাহলে X এর অসীম মান সম্ভব, তাই −1 ফেরত দিন। A B হলে ফলাফল হিসাবে (AB) এর ভাজক গণনা দিন।
উদাহরণস্বরূপ
ইনপুট
A=5, B=2
আউটপুট
Count of all possible values of X such that A % X = B are: 1
ব্যাখ্যা
5%3=2. So X is 3 here.
ইনপুট
A=10, B=10
আউটপুট
Count of all possible values of X such that A % X = B are: −1
ব্যাখ্যা
Here A==B so there are infinite solutions so −1 is returned.
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি −
এই পদ্ধতিতে আমরা i=1 থেকে i*i<=(A−B) পর্যন্ত লুপ ব্যবহার করে (A−B) এর ভাজক গণনা করব। যদি কোন আমি সম্পূর্ণভাবে ভাগ করে (A−B) তাহলে সেই অনুযায়ী গণনা আপডেট করুন।
-
ইনপুট হিসাবে A এবং B পূর্ণসংখ্যা নিন।
-
A
-
A==B হলে ফলস্বরূপ −1 প্রিন্ট করুন।
-
A>B-এর জন্য, function possible_values(int A, int B) A এবং B নেয় এবং X এর সম্ভাব্য সমস্ত মানের গণনা প্রদান করে যেমন A % X =B।
-
0 এবং X=A−B হিসাবে প্রাথমিক গণনা নিন।
-
X এর ভাজক গণনার জন্য i=1 থেকে i*i<(A−B) লুপ ব্যবহার করে ট্রাভার্স করুন।
-
যদি কোনো 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<<"Count of all possible values of X such that A % X = B are: "<<0;
}
else if(A == B){
cout<<"Count of all possible values of X such that A % X = B are: "<<−1;
}
else{
cout<<"Count of all possible values of X such that A % X = B are: "<<possible_values(A, B);
}
return 0;
} আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেCount of all possible values of X such that A % X = B are: 1