দুটি পূর্ণসংখ্যা 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