PDA

View Full Version : محاسبه مجموع فاکتوریل تشکیل دهنده یک عدد



zoghal
شنبه 19 خرداد 1386, 16:06 عصر
با سلام
سوالی داشتم. که هر جور فکر کردم جواب درستی براش پیدا نکردم و نیار به یک راه حل درست دارم
اما سوال میخواهم محاسبه کنم که عدید 31 از مجموعه چند فاکتوریل به دست اومده

به این مثال توجه کنید
31= 1*1! + 0*2! + 1*3! + 1*4!
کد نتیجه محاسبه میشه
31= 1+6+24

لطفا من را اهنمایی نماید.ممنون

BOB
یک شنبه 20 خرداد 1386, 14:02 عصر
سلام

1. اگر به ترتیب از هر کدام از فاکتوریلها حداکثر 1 مورد میتوان داشت، برخی اعداد به این روش قابل ساخت نیستند. مثلا عدد 10 به هیچ شکل بدست نمی آید 1+2+6=9
اگر این مسئله اهمیتی نداشته باشه، مثل الگوریتمهای معمول تبدیل مبنا کار کرده و عدد را با استفاده از جمع دنباله پاسخهای فاکتوریلها بساز.
البته گاهی لازم میشه که به عقب برگشته و بعضی فاکتوریلها را نادیده بگیری (fact * 0) که در این مورد استفاده از BackTracking پیشنهاد میشود.

2. اگر ترتیب و تعداد مهم نباشد این یک مسئله بهینه سازی (مشابه کوله پشتی) میباشد.

zoghal
دوشنبه 21 خرداد 1386, 09:28 صبح
با سلام

ترتیب اصلا مهم نیست
می شه یه روش رو بهم بگید

reza.palang
سه شنبه 22 خرداد 1386, 20:45 عصر
با این مسئله توی سایت aachp.ir برخورد کردم. خیلی جالب بود.
سوال، راه حل و سورس کد رو میذارم

zoghal
سه شنبه 22 خرداد 1386, 20:46 عصر
اوه مرسی

خیلی لطف کردید داشت رو مخم یواش یواش بریک میزدا