پایگاه دانش علوم کامپیوتر و مهندسی نرم‌افزار - sref.ir

مسئله‌های چالشی برنامه‌نویسی، داده‌ساختارها و الگوریتم‌ها

پل‌های ارتباطی

نمایش عدد در مبنای فاکتوریل

مساله 3 - صفحه 10 کتاب «مساله‌های الگوریتمی»: نمایش در مبنای فاکتوریل

هر عدد طبیعی مانند n را می توانیم بصورت n = d1 × 1! + d2 × 2! + d3 × 3! + ... + dk × k! بنویسیم که در آن k، d1، ... و dk اعدادی صحیح و نامنفی هستند و به ازای هر 1 <= i <= k، di <= i. به این عمل نمایش n در مبنای فاکتوریل می‌گویند.

بعنوان مثال:
10 = 0 × 1! + 2 × 2! + 1 × 3!
53 = 1 × 1! + 2 × 2! + 0 × 3! + 2 × 4!
31 = 1 × 1! + 0 × 2! + 1 × 3! + 1 × 4!

من این مساله را با زبان C/C++ به دو روش مختلف حل کرده‌ام. خروجی هر دو برنامه یکسان است که نمونه ای از اجرا را در تصویر زیر ملاحظه می کنید: