কম্পিউটার

C++ এ একটি নম্বরে পৌঁছান


ধরুন আপনি একটি অসীম সংখ্যা রেখায় 0 অবস্থানে দাঁড়িয়ে আছেন। এখন পজিশন টার্গেটে গোল আছে। এখানে প্রতিটি পদক্ষেপে, আপনি হয় বাম দিকে বা ডান দিকে যেতে পারেন। n-ম পদক্ষেপের সময় (1 থেকে শুরু), আপনি n পদক্ষেপ নিন। আমাদের গন্তব্যে পৌঁছানোর জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক ধাপ খুঁজে বের করতে হবে। সুতরাং যদি ইনপুট টার্গেট =3 এর মত হয়, তাহলে আমাদের 2 টি ধাপ দরকার। 0 থেকে 1, 1 থেকে 3 পর্যন্ত।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • টার্গেট :=|টার্গেট|, cnt :=0
  • যখন লক্ষ্য> 0,
    • cnt 1 কমিয়ে দিন
    • লক্ষ্য :=লক্ষ্য –cnt
  • যদি লক্ষ্য সমান হয়, তাহলে cnt ফেরত দিন, অন্যথায় cnt + 1 + cnt mod 2

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int reachNumber(int target) {
      target = abs(target);
      int cnt = 0;
      while(target > 0){
         target -= ++cnt;
      }
      return target % 2 == 0? cnt : cnt + 1 + cnt % 2;
   }
};
main(){
   Solution ob;
   cout << (ob.reachNumber(3));
}

ইনপুট

3

আউটপুট

2

  1. C++ এ মিতব্যয়ী নম্বর

  2. C++ পেন্টাটোপ নম্বর

  3. C++ এ অ্যারেতে সবচেয়ে কাছের নম্বর খুঁজুন

  4. C++ এ অ্যাডাম নম্বর