ধরুন আমাদের ভগ্নাংশের একটি তালিকা আছে যেখানে প্রতিটি ভগ্নাংশে [ লব, হর] ( লব / হর) রয়েছে। আমরা ভগ্নাংশের একটি নতুন তালিকা খুঁজে পেয়েছি যেমন ভগ্নাংশের সংখ্যাগুলি হল −
-
তাদের সবচেয়ে কম পদে. (20/14 হয়ে যায় 10/7)।
-
যেকোনো সদৃশ ভগ্নাংশ (হ্রাস করার পরে) সরানো হবে৷
৷ -
তাদের প্রকৃত মান অনুসারে ক্রমবর্ধমান ক্রমে সাজানো হয়েছে।
-
সংখ্যাটি ঋণাত্মক হলে, '-' চিহ্নটি লবের সাথে থাকবে।
সুতরাং, যদি ইনপুটটি {{16, 8},{4, 2},{7, 3},{14, 6},{20, 4},{-6, 12}} এর মত হয়, তাহলে আউটপুট হবে হতে [[-1, 2],[2, 1],[7, 3],[5, 1]]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি সেট s
সংজ্ঞায়িত করুন -
n :=v
এর আকার -
একটি অ্যারে তৈরি করুন r
-
আরম্ভ করার জন্য i :=0, যখন i
-
c :=|v[i, 0]| এর gcd এবং |v[i, 1]|
-
v[i, 0] :=v[i, 0] / c
-
v[i, 1] :=v[i, 1] / c
-
r
এর শেষে {v[i, 0], v[i, 1]} ঢোকান
-
-
তাদের মানের উপর ভিত্তি করে অ্যারে r সাজান
-
একটি অ্যারে ret করুন
-
আরম্ভ করার জন্য i :=0, যখন i
-
যদি ret খালি না হয় এবং ret এর শেষ উপাদানটি r[i] এর মত হয়, তাহলে −
-
ret এর শেষে r[i] ঢোকান
-
-
-
রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#includenamespace ব্যবহার করে std;void print_vector(vector > v) { cout <<"["; জন্য (int i =0; i &a, ভেক্টর &b){ double aa =(ডাবল)a[0] / (ডবল) a[1]; ডবল বিবি =(ডাবল)বি[0] / (ডাবল)বি[1]; ফেরত aa > সমাধান(ভেক্টর<ভেক্টর >&v) { সেট <ভেক্টর > s; int n =v.size(); ভেক্টর <ভেক্টর > r; for(int i =0; i > ret; for(int i =0; i > v ={{16, 8},{4, 2},{7, 3},{14, 6},{20, 4},{- 6, 12}}; সমাধান ob; print_vector(ob.solve(v));}
ইনপুট
{{16, 8},{4, 2},{7, 3},{14, 6},{20, 4},{-6, 12}}