ধরুন আমাদের দুটি সংখ্যা a এবং b আছে। দুই বন্ধু OX অক্ষে x =a এবং x =b অবস্থানে আছে। বন্ধুদের প্রত্যেকে একটি করে লাইন বরাবর যেকোনো দিকে সীমাহীন সংখ্যক বার যেতে পারে। নড়াচড়া করার মাধ্যমে, একজন বন্ধুর ক্লান্তি নিম্নলিখিত নিয়ম অনুসারে পরিবর্তিত হয়:প্রথম পদক্ষেপে ক্লান্তি 1 দ্বারা বৃদ্ধি পায়, দ্বিতীয় পদক্ষেপটি 2 দ্বারা ক্লান্তি বাড়ায় এবং আরও অনেক কিছু। তাদের মধ্যে দুটি OX অক্ষে একটি পূর্ণসংখ্যা বিন্দু পূরণ করতে চায়। আমাদের তাদের ন্যূনতম মোট ক্লান্তি খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি a =5 এর মত হয়; b =10, তাহলে আউটপুট 9 হবে, কারণ সর্বোত্তম উপায়গুলির মধ্যে একটি হল নিম্নলিখিত। প্রথম বন্ধুর ডানে তিন ধাপ সরানো উচিত, এবং দ্বিতীয় বন্ধুর বাম দিকে দুই ধাপ। সুতরাং, মোট ক্লান্তি 1 + 2 + 3 + 1 + 2 =9 হয়ে যায়।
পদক্ষেপ
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
ans := |a - b| sum := ans / 2 return (sum + (ans mod 2)) * (sum + 1)
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h> using namespace std; int solve(int a, int b){ int ans = abs(a - b); int sum = ans / 2; return (sum + (ans % 2)) * (sum + 1); } int main(){ int a = 5; int b = 10; cout << solve(a, b) << endl; }
ইনপুট
5, 10
আউটপুট
9