মনে করুন আমাদের একটি পূর্ণসংখ্যা X আছে। আমাদের 0 থেকে X পর্যন্ত যেতে লাগে ন্যূনতম জাম্পের সংখ্যা বের করতে হবে। প্রথম জাম্পটি এক ইউনিট দৈর্ঘ্যের হতে পারে এবং প্রতিটি পরবর্তী জাম্প সঠিকভাবে পिछले জাম্পের চেয়ে এক ইউনিট বড় হবে। প্রতিটি জাম্পে বাম বা ডান যাওয়া যাবে। তাই যদি X = 8 হয়, তবে আউটপুট হবে 4। 0 → -1 → 1 → 4 → 8 সম্ভাব estatua।
যদি আমরা ಗৌরব से наблю察 করি, তবে বলা যায় যে
- যদি আপনি সবসময় ডান দিকে জাম্প করেন, তবে n번 জাম্পের পর আপনি p = 1 + 2 + 3 + ... + n বিন্দুতে থাকবেন <ли>যদি বাম দিকে জাম্প করা যায়, kতম জাম্পে আপনি p - 2k বিন্দুতে থাকবেন
- যদি আমরা সতর্কতার সাথে বেছে নিই কোন জাম্প বামে যাবে এবং কোনটি ডানে, nবার জাম্পের পর, আপনি n(n+1)/2 এবং -(n*(n+1)/2) এর মধ্যবর্তী যেকোনো বিন্দুতে থাকতে পারেন, যার 패রিটি n(n+1)/2-এর সাথে একই।
উদাহরণ
#include <iostream>
#include <cmath>
using namespace std;
inline int sumOneToN(int n) {
return (n * (n + 1)) / 2;
}
int jumps(int n) {
n = abs(n);
int ans = 0;
while (sumOneToN(ans) < n || (sumOneToN(ans) - n) & 1)
ans++;
return ans;
}
int main() {
int n = 9;
cout << "Number of jumps: " << jumps(n);
}
আউটপুট
Number of jumps: 5