কম্পিউটার টিউটোরিয়াল

দেয়া নাম্বার থেকে রিপিটেড ডিজিট বাদ দেওয়া C++-এ

এই আর্টিকেলে, আমাদের একটি নাম্বার n দেওয়া আছে, এবং আমাদের দেয়া নাম্বার থেকে রিপিটেড ডিজিট বাদ দিতে হবে।

ইনপুট: x = 12224
আউটপুট: 124
ইনপুট: x = 124422
আউটপুট: 1242
ইনপুট: x = 11332
আউটপুট: 132

দেয়া সমস্যায়, আমরা সব ডিজিটের মধ্য দিয়ে যাব এবং রিপিটিং ডিজিটগুলো বাদ দিব।

সমাধানের পদ্ধতি

দেওয়া পদ্ধতিতে, আমরা n-এর সব ডিজিটের মধ্য দিয়ে ডানে থেকে বামে যাব। আমরা n-এর ডিজিটগুলো নব n-এর ১০ দিয়ে মড लेकर এবং তারপর n কে ১০ দিয়ে ভাগ করে। এখন আমাদের কারেন্ট ডিজিট হল n mod 10। আমরা এটিকে প্রিভিয়াস ডিজিটের সাথে চেক করব। যদি ডিজিটগুলো সমান হয়, তবে আমরা n ট্রাভার্স করব। যদি সেগুলো সমান না হয়, তবে আমরা এই ডিজিটকে আমাদের নতুন নাম্বারে যোগ করব, প্রিভিয়াস ডিজিটকে কারেন্টে চেঞ্জ করব, এবং লুপ চালিয়ে যাব।

উদাহরণ প্রোগ্রাম

#include <bits/stdc++.h>
#define MOD 1000000007
using namespace std;

int main() {
    int n = 1222333232; // দেয়া n
    int new_n = 0; // নতুন নাম্বার
    int po = 1; // নতুন ডিজিটের জন্য টেনের গুণিতক হবে
    int prev = -1; // প্রিভিয়াস ডিজিট
    int curr; // কারেন্ট ডিজিট
    while (n) {
        curr = n % 10;
        if (prev != curr) { // যদি ডিজিট রিপিট না হয়, তবে আমরা এই ব্লকে যাব
            new_n = new_n + (curr * po); // আমরা নতুন ডিজিট new_n-এ যোগ করব
            po *= 10;
            prev = curr;
        }
        n /= 10;
    }
    cout << new_n << "\n";
    return 0;
}

আউটপুট

123232

উপরোক্ত কোডের ব্যাখ্যা

উপরোক্ত পদ্ধতিতে, আমরা সিম্পলি n-এর ডিজিটগুলো ট্রাভার্স করছি এখন যখন আমাদের প্রিভিয়াস ডিজিট এবং কারেন্ট ডিজিট মেলে না, আমরা সেসব ডিজিট আমাদের নতুন নাম্বারে যোগ করি, এবং যেহেতু আমাদের ডিজিট যোগ হয়েছে, আমরা po-রও বাড়াচ্ছি যা আমাদের ডিজিটের পজিশন এর জন্য ব্যবহৃত হচ্ছে এখন যদি আমাদের কারেন্ট এবং প্রিভিয়াস ডিজিট মেলে - আমরা এই ব্লক রান করি না এবং লুপ চালিয়ে যাই যতক্ষণ না আমাদের n ০ হয়।

উপসংহার

এই আর্টিকেলে, আমরা একটি দেয়া নাম্বার থেকে রিপিটেড ডিজিট বাদ দেওয়ার সমস্যা সমাধান করেছি। আমরা এই সমস্যায় C++ প্রোগ্রাম এবং সম্পূর্ণ পদ্ধতি (নরমাল) শিখেছি যেগুলো দিয়ে আমরা এই সমস্যা সমাধান করেছি। আমরা একই প্রোগ্রাম অন্যান্য ল্যাঙ্গুয়েজে লিখতে পারি যেমন C, Java, Python এবং অন্যান্য ল্যাঙ্গুয়েজ। আশা করি আপনি এই আর্টিকেলটিকে সহায়ক খুঁজে পাবেন।

  1. C++-এ সংখ্যা m কে n-এ রূপান্তর করতে ন্যূনতম অপারেশন

  2. দেওয়া সংখ্যার সেট বিট ব্যবহার করে ন্যূনতম সংখ্যা বের করা C++-তে

  3. C++-এ একটি দিয়ে দেয়া সংখ্যার অঙ্ক ব্যবহার করে সর্বোচ্চ সংখ্যা নির্ণয়

  4. C++-এ দেওয়া সংখ্যার ডিজিটগুলোর যোগফল বের করা