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

স্ট্রিং সংখ্যা থেকে অঙ্ক মুছে ৩ দ্বারা বিভাজ্য করা - সি++

আপনাকে একটি স্ট্রিং আকারে সংখ্যা দেওয়া হয়েছে। বের করতে হবে সর্বোচ্চ কতগুলো অঙ্ক মুছে দিলে সেটি ৩ দ্বারা বিভাজ্য হবে। সর্বোচ্চ ২টি অঙ্ক মুছে দেওয়া যেতে পারে।

উদাহরণ

ইনপুট: 92 → আউটপুট: 1 (২ মুছে দিলে ৯ হয়, যা ৩ দ্বারা বিভাজ্য)

ইনপুট: 999 → আউটপুট: 0 (ইতিমধ্যেই ৩ দ্বারা বিভাজ্য)

অ্যালগরিদম

  • সংখ্যাটি স্ট্রিং হিসেবে নিন।
  • সর্বোচ্চ অঙ্কের যোগফল বের করুন।
  • যদি যোগফল ৩ দ্বারা বিভাজ্য হয়, ফেরত দিন ০।
  • যদি না হয় এবং দৈর্ঘ্য ১ হয়, ফেরত দিন -১ (সম্ভব নয়)।
  • প্রতিটি অঙ্ক দিয়ে দেখুন: সেটি মুছে দিলে যোগফল ৩ দ্বারা বিভাজ্য হয় কিনা। হলে ফেরত দিন ১।
  • দৈর্ঘ্য ২ হলে ফেরত দিন -১।
  • অন্যথায় ফেরত দিন ২।

সি++ ইমপ্লিমেন্টেশন

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

int getNumSum(string n) {
    int sum = 0;
    for (char c : n) sum += (c - '0');
    return sum;
}

int getDigitsCount(string num) {
    int n = num.length();
    int sum = getNumSum(num);
    if (sum % 3 == 0) return 0;
    if (n == 1) return -1;
    for (int i = 0; i < n; i++) {
        int digit = num[i] - '0';
        if (sum % 3 == digit % 3) return 1;
    }
    if (n == 2) return -1;
    return 2;
}

int main() {
    string num = "7536836";
    cout << getDigitsCount(num) << endl;
    return 0;
}

আউটপুট

1
  1. C++-এ একটি সংখ্যা ৪১ দ্বারা বিভাজ্য কিনা তা যাচাই করা

  2. C++-এ একটি সংখ্যা ২৩ দ্বারা বিভাজ্য কিনা তা যাচাই করা

  3. C++ প্রোগ্রাম: বড় সংখ্যা ২০ দিয়ে বিভাজ্য কিনা চেক (স্ট্রিং ইনপুট)

  4. C++-এ A-এ N অঙ্ক যোগ করে প্রতিটি যোগফলে B দ্বারা বিভাজ্য রাখা