কম্পিউটার

C++ এ অনন্য ভগ্নাংশ


ধরুন আমাদের ভগ্নাংশের একটি তালিকা আছে যেখানে প্রতিটি ভগ্নাংশে [ লব, হর] ( লব / হর) রয়েছে। আমরা ভগ্নাংশের একটি নতুন তালিকা খুঁজে পেয়েছি যেমন ভগ্নাংশের সংখ্যাগুলি হল −

  • তাদের সবচেয়ে কম পদে. (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] ঢোকান

  • রিটার্ন রিটার্ন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include  namespace ব্যবহার করে 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}}

আউটপুট

<প্রে>[[-1, 2, ],[2, 1, ],[7, 3, ],[5, 1, ],]
  1. C++ এ অনন্য বাইনারি অনুসন্ধান গাছ

  2. C++ এ অনন্য বাইনারি অনুসন্ধান ট্রি II

  3. ভেক্টর::রিসাইজ() বনাম ভেক্টর::রিজার্ভ() C++ এ

  4. C++ এ ইনফারেন্স টাইপ করুন