মান লক্ষ্য করুন একটি সংখ্যা n। কিছু বাচ্চা একটি বৃত্তে দাঁড়িয়ে আছে। তাদের নম্বর ১ থেকে n, যারা ক্লকওয়াইজ অর্ডারে আছে এবং ১ নম্বর বাচ্চাটি বল ধরে আছে। প্রথমে ১ নম্বর বাচ্চা বলটি পরবর্তী বাচ্চাকে থ্রো করে, তারপর ২ নম্বর বাচ্চা এক বাচ্চা বাদ দিয়ে থ্রো করে (৪ নম্বর বাচ্চাক), তারপর ৪ নম্বর বাচ্চা ৭ নম্বর বাচ্চাকে থ্রো করে এবং এভাবেই চলে। যখন বলটি থ্রো করা হয়, এটি বৃত্তের শুরুতে পার হয়ে যেতে পারে। সব বাচ্চা বল পায় না। যদি কোনো বাচ্চা বল না পায়, তবে আমাদের প্রতিটি থ্রো után বল পেল বাচ্চাদের নম্বর বের করতে হবে।
তাই, যদি ইনপুট হয় n = 10, তবে আউটপুট হবে [2, 4, 7, 1, 6, 2, 9, 7, 6]।
ধাপসমূহ
এটি সমাধান করার জন্য, আমরা এই ধাপগুলো অনুসরণ করব −
p := 1
for initialize i := 1, when i < n, update (increase i by 1), do:
p := p + i
p := p mod n
if not p is non-zero, then:
p := n
print p
উদাহরণ
বेहतर বোঝার জন্য ইমপ্লিমেন্টেশন দেখি −
#include <bits/stdc++.h>
using namespace std;
void solve(int n){
int p = 1;
for (int i = 1; i < n; i++){
p += i;
p %= n;
if (!p)
p = n;
printf("%d, ", p);
}
}
int main(){
int n = 10;
solve(n);
}
ইনপুট
10
আউটপুট
2, 4, 7, 1, 6, 2, 9, 7, 6,