ভূমিকা
আসুন নিম্নলিখিত ক্রমটি পর্যালোচনা করুন (অ-নেতিবাচক পূর্ণসংখ্যা):
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ...
উদাহরণস্বরূপ, প্রথম তিনটি সংখ্যা নেওয়া যাক । এগুলি হল 0, 1, 2
। এই ক্রমটিতে ব্যবহৃত নম্বরগুলি ছয়টি বিভিন্ন উপায়ে অর্ডার করা যেতে পারে :
012 120
021 201
102 210
সুতরাং, আসুন যে F (3) = 6 বলা যাক । আর একটি উদাহরণ এফ (12) । এটিতে সংখ্যাগুলি রয়েছে:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
বা সংক্ষিপ্ত সংস্করণ:
01234567891011
এটি পুনরায় সাজানোর বিভিন্ন উপায়ের জন্য, আমাদের প্রথমে এই স্ট্রিংয়ের দৈর্ঘ্যটি দেখতে হবে। এই স্ট্রিংয়ের দৈর্ঘ্য 14
। সুতরাং আমরা 14 গণনা ! । তবে উদাহরণস্বরূপ এগুলি চূড়ান্ত স্ট্রিংটি ব্যাহত না করে জায়গাগুলি বিনিময় করতে পারে। 2 টি শূন্য আছে, তাই 2 আছে! উপায়ে exhange করার শূণ্যসমূহ অর্ডার ব্যাহত ছাড়া। এছাড়াও 4 টি আছে, তাই 4 আছে! একগুলি স্যুইচ করার উপায়গুলি। আমরা এই দুটি সংখ্যা দ্বারা মোট ভাগ:
এটি 14 আছে! / (4! × 2!) = 1816214444 স্ট্রিংটি সাজানোর উপায় 01234567891011
। সুতরাং আমরা এফ (12) = 1816214400 উপসংহারে পৌঁছে যেতে পারি ।
কাজটি
প্রদত্ত এন , আউটপুট এফ (এন) । যাদের পরিচিতির দরকার নেই তাদের জন্য। এফ (এন) গণনা করতে, আমরা প্রথমে প্রথম এন অ-নেতিবাচক পূর্ণসংখ্যার (যেমন এন = 12 এর জন্য, সংক্ষিপ্ত স্ট্রিংটি হবে 01234567891011
) সংশ্লেষ করি এবং এই স্ট্রিংটি সাজানোর পদ্ধতিগুলির সংখ্যা গণনা করি।
পরীক্ষার মামলা
Input: Output:
0 1
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
11 119750400
12 1816214400
13 43589145600
14 1111523212800
15 30169915776000
বিঃদ্রঃ
উত্তর কম্পিউটিং একটি মধ্যে নির্ণিত করা আবশ্যক 10 সেকেন্ড সময় সীমা , নরপশু-অত্যাচার করা হয় অননুমোদিত ।
এটি কোড-গল্ফ , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমাটি জয়!
10
সংখ্যাগুলি হ'ল 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
। দশটি ভিন্ন অঙ্ক, সুতরাং ফলাফল 10 !.
0
কেসটি আমার গণনা বন্ধ করে দিচ্ছে (বোকা ফাঁকা স্ট্রিং)।
F(N)
নয় O(N!)
এবং যে log F(N)
হয় O(log N!)
কিন্তু যারা শুধু hunches ... হয়
10
সঠিক? এটি 10 এর চেয়ে কম হওয়া উচিত বলে মনে হচ্ছে! যেহেতু পুনরাবৃত্তি সংখ্যাগুলি শুরু হয়।