A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

● BigNum Problems - Big Power

جمعه, ۶ دی ۱۳۹۲، ۱۱:۴۷ ب.ظ

مسئله خیلی ساده است، آیا تا به حال سعی کرده اید دو عدد را به توان هم برسانید به طوری که جواب بدست آمده تا مثلاً 1000 رقم هم داشته باشد؟

پر واضح است که یک عدد 1000 رقمی در long long نمی گنجد! (نهایتاً 19 رقم را پاسخ می دهد) در نسخه ی اوّلیه ی این سؤال از سری سؤالات معروف Bignum Problem ، می خواهیم دو عدد long long را به توان هم برسانیم. قبل از دیدن ادامه مطلب، توجّه به مثال زیر هم خالی از لطف نیست.

input
13
92
output
13^92 = 3039403870834444806340783731173053535443315083722268135359571800908254256906888713534 531284301087613681

ورودی:

خط اوّل، A یک عدد طبیعی از جنس long long است که پایه را نشان می دهد (حداکثر 19 رقم)

خط دوّم، B یک عدد حسابی از جنس long long است که توان را نشان می دهد (حداکثر 19 رقم)


خروجی:

به عنوان خروجی، حاصل توان AB که یک عدد صحیح است را به صورت A^B = AB چاپ کنید.

پ.ن: در نسخه ی دوّم این سؤال، باید دو عدد 1000 رقمی (و بلکه بیشتر) را به توان هم برسانیم.

// A Drop of the Programming Sea - adops.blog.ir #include <iostream> #include <algorithm> using namespace std; const unsigned int mxn = 1.e5; int a[mxn]; int main() { long long base, exp; fill(a, a+mxn, 0); a[mxn-1] = 1; cin >> base >> exp; for(int j=0; j<exp; j++) { for(int i=0; i<mxn; i++) a[i]=a[i]*base; for(int i=mxn-1; i>0; i--) if(a[i]>9) { a[i-1]+=a[i]/10; a[i]=a[i]%10; } } int tmp = 1; for(int i=0; i<mxn; i++) if(a[i]!=0) { tmp = i; break; } cout << base << '^' << exp << " = "; for(int i=tmp; i<mxn; i++) cout << a[i]; cout << endl; return 0; }

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی