PDA

View Full Version : سوال: مشکل در محاسبه !100



amirrezaq
جمعه 07 آذر 1393, 19:53 عصر
با عرض سلام و خسته نباشید
من یک مشکلی که با برنامه نویسی دارم اینه که این کامپیوتر نمیتونه اعداد بزرگ رو محاسبه کنه
مثلا من الان میخوام 100 فاکتوریل رو با کد زیر محاسبه کنم، ولی کامپیوتر به من 0 رو بر میگردنه:

int n,a,x;
cin>>n;
a=n;
x=n;

while (a>1){
x=x*(n-1);
a=a-1;
n=n-1;
}

cout<<x;

حالا مشکل چیه؟؟؟ آیا کار خاصی باید بکنم؟؟؟
محدودیت زمان هم مهم نیست
با تشکر

sa1378
جمعه 07 آذر 1393, 20:03 عصر
با عرض سلام و خسته نباشید
من یک مشکلی که با برنامه نویسی دارم اینه که این کامپیوتر نمیتونه اعداد بزرگ رو محاسبه کنه
مثلا من الان میخوام 100 فاکتوریل رو با کد زیر محاسبه کنم، ولی کامپیوتر به من 0 رو بر میگردنه:

int n,a,x;
cin>>n;
a=n;
x=n;

while (a>1){
x=x*(n-1);
a=a-1;
n=n-1;
}

cout<<x;


حالا مشکل چیه؟؟؟ آیا کار خاصی باید بکنم؟؟؟
محدودیت زمان هم مهم نیست
با تشکر
خب 100! عدد بزرگیه و نمیشه توی متغییر های عددی ذخیرش کرد
امکان پذیر هست ولی باید از آرایه استفاده کنین
...
معمولا جایی نمیگن 100! رو حساب کنین
مثلا میگن باقیماندش رو بر1+ 7^10 حساب کنین!!

rahnema1
جمعه 07 آذر 1393, 20:44 عصر
سلام
برای کار با اعداد بزرگ کتابخانه های مخصوص باید استفاده بشه مثل

https://gmplib.org

http://www.di-mgt.com.au/bigdigits.html

iut.ali
شنبه 08 آذر 1393, 14:32 عصر
با عرض سلام و خسته نباشید
من یک مشکلی که با برنامه نویسی دارم اینه که این کامپیوتر نمیتونه اعداد بزرگ رو محاسبه کنه
مثلا من الان میخوام 100 فاکتوریل رو با کد زیر محاسبه کنم، ولی کامپیوتر به من 0 رو بر میگردنه:

int n,a,x;
cin>>n;
a=n;
x=n;

while (a>1){
x=x*(n-1);
a=a-1;
n=n-1;
}

cout<<x;

حالا مشکل چیه؟؟؟ آیا کار خاصی باید بکنم؟؟؟
محدودیت زمان هم مهم نیست
با تشکر
با رشته ها هم میشه حسابش کرد تو همین سایت یه تاپیک دربارش هست یه سرچی بزن

مسعود اقدسی فام
شنبه 08 آذر 1393, 14:52 عصر
خب 100! عدد بزرگیه و نمیشه توی متغییر های عددی ذخیرش کرد
امکان پذیر هست ولی باید از آرایه استفاده کنین
...
معمولا جایی نمیگن 100! رو حساب کنین
مثلا میگن باقیماندش رو بر1+ 7^10 حساب کنین!!

چیزی که شما می‌گید مربوط به مسابقات برنامه‌نویسیه که هدف طراحی الگوریتم مناسب هست. به همین خاطر می‌گن باقیمانده بر 10000007 رو حساب کن (دو بایت کم ارزش عدد) که کار با اعداد بزرگ دغدغه‌ی شرکت‌کننده نباشه. در دنیای واقعی و کاربرد واقعی شاید نیاز باشه دقیقا خود !100 صد و چند رقمی رو حساب کنی.

behnam404
شنبه 08 آذر 1393, 21:22 عصر
متغیری که می خواهید فاکتوریل عددی رو توش ذخیره کنید از نوع int هست که اعدادی بین بازه 2147483648 - و 2147483648 رو قبول میکنه.
برای اعداد بزرگ می تونید از آرایه استفاده کنید .برای یادگیری الگوریتم کار با اعداد خیلی بزرگ مبحث آرایه ها را در ساختمان داده می تواند به شما کمک کند.

amirrezaq
سه شنبه 11 آذر 1393, 22:03 عصر
توی یکی از سوالات پروجکت اویلر گفته جمع ارقام !100 رو حساب کنید.
بازم از تشکر.

sa1378
چهارشنبه 12 آذر 1393, 15:23 عصر
توی یکی از سوالات پروجکت اویلر گفته جمع ارقام !100 رو حساب کنید.
بازم از تشکر.

اگه برای این مسئله میخواین نباید 100! رو حساب کنین
باید یه الگوریتم بدین که بدون حساب کردنش مجموع رو بدست بیارین