আমাদের দুটি সংখ্যা L এবং R দেওয়া আছে যা [L, R] রেঞ্জটি নির্ধারণ করে। লক্ষ্য হল L এবং R-এর মধ্যবর্তী সব সংখ্যা খুঁজে বের করা যা জোড় এবং যাদের অঙ্কগুলোর যোগফল ৩ দ্বারা বিভাজ্য।
উদাহরণ
ইনপুট: L=10, R=20
আউটপুট: [L, R] রেঞ্জের জোড় সংখ্যা যাদের অঙ্কের যোগফল ৩ দ্বারা বিভাজ্য: ২
ব্যাখ্যা: ১০ থেকে ২০ পর্যন্ত জোড় সংখ্যাগুলো: ১০, ১২, ১৪, ১৬, ১৮, ২০। যাদের অঙ্কের যোগফল ৩ দ্বারা বিভাজ্য: ১২ (১+২=৩) এবং ১৮ (১+৮=৯)।
ইনপুট: L=100, R=108
আউটপুট: [L, R] রেঞ্জের জোড় সংখ্যা যাদের অঙ্কের যোগফল ৩ দ্বারা বিভাজ্য: ২
ব্যাখ্যা: ১০০ থেকে ১০৮ পর্যন্ত জোড় সংখ্যাগুলো: ১০০, ১০২, ১০৪, ১০৬, ১০৮। যাদের অঙ্কের যোগফল ৩ দ্বারা বিভাজ্য: ১০২ (১+০+২=৩) এবং ১০৮ (১+০+৮=৯)।
অ্যাপ্রোচ
- first এবং last ভেরিয়েবল দিয়ে রেঞ্জ নির্ধারণ করা হয়।
Digit_sum(int num)ফাংশন সংখ্যা গ্রহণ করে এর অঙ্কগুলোর যোগফল রিটার্ন করে।- while লুপ ব্যবহার করে num ০ না হওয়া পর্যন্ত num%10 (এককের অঙ্ক) total-এ যোগ করা হয় এবং num কে ১০ দিয়ে ভাগ করে কমিয়ে আনা হয়।
divisible_3(int first, int last)ফাংশন রেঞ্জ গ্রহণ করে জোড় সংখ্যা যাদের অঙ্কের যোগফল ৩ দ্বারা বিভাজ্য, তাদের গণনা রিটার্ন করে।- for লুপে i=first থেকে i<=last পর্যন্ত যাচাই করা হয় সংখ্যাটি জোড় কিনা (i%2==0)। জোড় হলে Digit_sum(i) কল করে যোগফল ৩ দ্বারা বিভাজ্য কিনা যাচাই করে count বাড়ানো হয়।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int Digit_sum(int num) {
int total = 0;
while (num != 0) {
total += num % 10;
num = num / 10;
}
return total;
}
int divisible_3(int first, int last) {
int count = 0;
for (int i = first; i <= last; i++) {
if (i % 2 == 0 && Digit_sum(i) % 3 == 0) {
count++;
}
}
return count;
}
int main() {
int first = 300, last = 500;
cout << "Count of all even numbers in the range [L, R] whose sum of digits is divisible by 3 are: " << divisible_3(first, last);
return 0;
}
আউটপুট
Count of all even numbers in the range [L, R] whose sum of digits is divisible by 3 are: 34