আমাদের N সাইজের একটি অ্যারে দেওয়া আছে। অ্যারেটি প্রাথমিকভাবে সব ০ দিয়ে ভরা। টাস্ক হলো Nটি মুভের পর অ্যারেতে কতগুলো ১ আছে সেটি গণনা করা। প্রতিটি N-তম মুভের একটি নিয়ম রয়েছে। নিয়মগুলো:
- ১লা মুভ: ১, ২, ৩, ৪... পজিশনের এলিমেন্ট পরিবর্তন করা
- ২য় মুভ: ২, ৪, ৬, ৮... পজিশনের এলিমেন্ট পরিবর্তন করা
- ৩য় মুভ: ৩, ৬, ৯, ১২... পজিশনের এলিমেন্ট পরিবর্তন করা
শেষ অ্যারেতে ১-এর সংখ্যা বের করুন।
উদাহরণ ১
ইনপুট: Arr[] = {0,0,0,0}, N=4
আউটপুট: N মুভের পর অ্যারেতে ১-এর সংখ্যা - ২
ব্যাখ্যা: মুভ অনুযায়ী অ্যারে পরিবর্তন:
মুভ ১: {1,1,1,1}
মুভ ২: {1,0,1,0}
মুভ ৩: {1,0,0,1} // নোট: এখানে ৩ থাকা উচিত নয়, ১ থাকবে
মুভ ৪: {1,0,0,1}
শেষ অ্যারেতে ১-এর সংখ্যা ২।
উদাহরণ ২
ইনপুট: Arr[] = {0,0,0,0,0,0}, N=6
আউটপুট: N মুভের পর অ্যারেতে ১-এর সংখ্যা - ২
ব্যাখ্যা: মুভ অনুযায়ী অ্যারে পরিবর্তন (৭টি এলিমেন্ট দেখানো হয়েছে, কিন্তু N=6):
মুভ ১: {1,1,1,1,1,1}
মুভ ২: {1,0,1,0,1,0}
মুভ ৩: {1,0,0,1,0,0}
মুভ ৪: {1,0,0,0,1,0}
মুভ ৫: {1,0,0,0,0,1}
মুভ ৬: {1,0,0,0,0,0} // একদম শেষে ১ থাকবে?
শেষ অ্যারেতে ১-এর সংখ্যা ২।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- ইন্টিজার অ্যারে
Arr[]০ দিয়ে আরম্ভিক라이জড এবং ইন্টিজারNনেওয়া হয়েছে। OnecountফাংশনArr[]এবং এর সাইজNইনপুট নেয় এবং N মুভের পর ১-এর সংখ্যা রিটার্ন করে।- বাহ্যিক for লুপ ১ থেকে N পর্যন্ত চলে (প্রতিটি i i-তম মুভ প্রতীকান্ন)।
- আন্তরিক for লুপ ০th ইনডেক্স থেকে অ্যারের শেষ পর্যন্ত চলে।
- প্রতিটি i-তম মুভের জন্য, যদি ইনডেক্স j, i-র গুণিতক হয় (j%i==0), তাহলে সে পজিশনে ০ কে ১ ও ১ কে ০ এ কনভার্ট করা হয়।
- এই প্রক্রিয়া প্রতিটি i-এর জন্য অ্যারের শেষ পর্যন্ত চলে।
- নোট: ইনডেক্স i=1, j=1 থেকে শুরু হয় কিন্তু অ্যারে ইনডেক্স ০ থেকে N-1। এই কারণে
arr[j-1]প্রতিবার কনভার্ট করা হয়। - শেষে পুরো অ্যারে ট্রাভার্স করে ১-এর সংখ্যা কাউন্ট করা হয়।
- কাউন্ট রিটার্ন করা হয়।
উদাহরণ কোড
#include <stdio.h>
int Onecount(int arr[], int N) {
for (int i = 1; i <= N; i++) {
for (int j = i; j <= N; j++) {
// j যদি i দিয়ে বিভাজ্য হয়
if (j % i == 0) {
if (arr[j - 1] == 0)
arr[j - 1] = 1; // ০ কে ১ করা
else
arr[j - 1] = 0; // ১ কে ০ করা
}
}
}
int count = 0;
for (int i = 0; i < N; i++)
if (arr[i] == 1)
count++; // ১-এর সংখ্যা গণনা
return count;
}
int main() {
int size = 6;
int Arr[6] = {0};
printf("N মুভের পর অ্যারেতে ১-এর সংখ্যা: %d", Onecount(Arr, size));
return 0;
}
আউটপুট
N মুভের পর অ্যারেতে ১-এর সংখ্যা: 2