پرسش و پاسخ پیرامون برنامه‌نویسی

  • شروع کننده موضوع max
  • تاریخ شروع
ارسال‌ها
687
امتیاز
915
نام مرکز سمپاد
راهنمایی حلی 2 - دبیرستان حلی10
شهر
تهران
سال فارغ التحصیلی
1397
دانشگاه
Shahed Uni
رشته دانشگاه
Computer Science
تلگرام
اینستاگرام
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از ایلیا :
نه راستشو بخای معلم ادبیات ازم خاسته که اگه تونستم این کارو انجام بدم میخام یه چیزی با اسم خودم باشه!این اسکریپت نویسی شو که میگی کار سختیه؟همینکاری که گفتیو میخام.بعد اینی که میگی خوروجیش چیه؟فایل exe میده؟ببخشید خیلی سوالای روی مخ بپرسیدم :-"
نه عزیزم من فقط تحت وب مینویسم این چیزی که میگم مثلا میاد یه کلمه رو سرچ میکنه بعد میاد اگه پیدا شد معنیش رو نشون میده
 

daneshvar.amrollahi

کاربر حرفه‌ای
ارسال‌ها
327
امتیاز
130
نام مرکز سمپاد
راهنمایی حلی۲/دبیرستان حلی۱۰/دبیرستان علامه طباطبایی
شهر
تهران
سال فارغ التحصیلی
1397
مدال المپیاد
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

سلام. کوتاه ترین راه برای محاسبه ک م م یه سری عدد تو یه آرایه چیه؟ عددی که میده 32 بیت اینتجره.
یه جایی این کد رو سابمیت میکنم زمان بیش از 1 ثانیه میگیره.
 

rezaezio

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,167
امتیاز
1,956
نام مرکز سمپاد
حلّیِ 2
شهر
تهران
مدال المپیاد
برنز و طلای کامپیوتر !
دانشگاه
شریف
رشته دانشگاه
نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

این کد سریع ترینشه ... اردر n.log n
http://paste.ubuntu.com/6854396/
 

daneshvar.amrollahi

کاربر حرفه‌ای
ارسال‌ها
327
امتیاز
130
نام مرکز سمپاد
راهنمایی حلی۲/دبیرستان حلی۱۰/دبیرستان علامه طباطبایی
شهر
تهران
سال فارغ التحصیلی
1397
مدال المپیاد
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

اردر همون تعداد بار های اجرا در برنامست؟ که نباید بیشتر از 8^10 شه؟
ممنون تایم لیمیت اکسیدد نخورد
 

The Smith

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,061
امتیاز
3,545
نام مرکز سمپاد
سلام ایران‌زمین
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از daneshvar.amr :
اردر همون تعداد بار های اجرا در برنامست؟ که نباید بیشتر از 8^10 شه؟
ممنون تایم لیمیت اکسیدد نخورد
اردر حداکثر کارهایی هست که برنامه در طول اجرا انجام میده :D
برای سرور های جاج آنلاین 8^10 هست.
 

daneshvar.amrollahi

کاربر حرفه‌ای
ارسال‌ها
327
امتیاز
130
نام مرکز سمپاد
راهنمایی حلی۲/دبیرستان حلی۱۰/دبیرستان علامه طباطبایی
شهر
تهران
سال فارغ التحصیلی
1397
مدال المپیاد
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

سلام. چند تا سوال درباره دنباله فیبوناچی:
1 - برنامشو نوشتم عدد n ام اش رو بگه. تا مقدار n رو که 70 میزدم درست می گفت. اما بیشتر از 70 جواب غلط می داد. فعلا کاری به مدت زمان محاسبه ندارم. نوعشم unsigned long long زدم. این نباید جواب بده؟ باید تا 18 رقم بگیره! مشکل کامپایلره؟

2 - فکر کنم یه رابطه هم برای بدست آوردن عدد n ام اش هم هست. که 1/5 در یه چیزی ضرب میشه و ... . آخرش باید کل این عبارت رو رند کنیم دیگه؟ یا اینکه همون وسط هم رادیکال 5 رو باید رند کنیم؟ استفاده از تابع round کتابخانه math کافیه؟

3 - راهی وجود داره مجموع ارقام عدد n ام رو بدست آورد؟ میخوام چک کنم آیا بر 3 بخش پذیر است یا نه؟ چون دیگه اینجا نباید حسابش کرد چون مقدار n حداگثر 10 به توان 6 است که اصلا عدد 10 به توان 6 ام فیبوناچی در داده ای جا نمی شود.
 

rezaezio

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,167
امتیاز
1,956
نام مرکز سمپاد
حلّیِ 2
شهر
تهران
مدال المپیاد
برنز و طلای کامپیوتر !
دانشگاه
شریف
رشته دانشگاه
نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

هلو برادر!
1- دنباله فیبوناچی رشد نمایی داره! یعنی رشدش تقریبا به اندازه تابع y = 2^x !
unsigned long long تا 1 - 64^2 رو توی خودش جا میده! پس نباید توقع داشته باشه جمله 70 ام فیبوناچی که حدودا 70^2 عه، توی این نوع متغیر جا بشه!

2- آخرش باید رند کنی! دقت کن اُردر محاسبه با استفاده از اون فرمول (O(log n هست، ولی ممکنه جوابِ دقیق رو نده! راه های دقیقی برای پیداکردن جمله n ام از اردر (O(log n هست!! (بگرد اگه پیدا نکردی بگو)

3- جمله n ام فیبوناچی به 3 بخشپذیره،‌ اگر و فقط اگر n به 4 بخشپذیر باشه! سعی کن خودت اینو ثابت کنی!
 

daneshvar.amrollahi

کاربر حرفه‌ای
ارسال‌ها
327
امتیاز
130
نام مرکز سمپاد
راهنمایی حلی۲/دبیرستان حلی۱۰/دبیرستان علامه طباطبایی
شهر
تهران
سال فارغ التحصیلی
1397
مدال المپیاد
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

یعنی من بخوام عدد n ام اش رو بدست بیارم اصلاْ نمی تونم ذخیرش کنم؟ داده ای هست بزرگتر از unsigned long long int?
 

rezaezio

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,167
امتیاز
1,956
نام مرکز سمپاد
حلّیِ 2
شهر
تهران
مدال المپیاد
برنز و طلای کامپیوتر !
دانشگاه
شریف
رشته دانشگاه
نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

جاوا، پایتون خودشون بیگ‌نام دارن ! (پایتون کلا اعدادش بیگنامن) ولی توی سی باید خودت توابع بیگنام رو بنویسی ! حالا یا تو استرینگ تا تو آرایه
 

daneshvar.amrollahi

کاربر حرفه‌ای
ارسال‌ها
327
امتیاز
130
نام مرکز سمپاد
راهنمایی حلی۲/دبیرستان حلی۱۰/دبیرستان علامه طباطبایی
شهر
تهران
سال فارغ التحصیلی
1397
مدال المپیاد
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

رابطه دقیقش اینه؟
یک تقسیم بر رادیکال پنج ضرب در یه پرانتز که توش یک به علاوه رادیکال پنج و ... . نمی تونم به صورت ریاضیاتی اینجا بنویسم.
این لینکش:
http://www.maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/fibFormula.html

میشه با رند کردن کل این عبارت عدد n ام رو بدست آورد؟ زیر 1 ثانیه جواب میده؟

پاسکال یه داده داره qword
0 .. 18446744073709551615
جواب نمیده؟ کلاً راهی به جز حساب کردنش نیست؟
 

rezaezio

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,167
امتیاز
1,956
نام مرکز سمپاد
حلّیِ 2
شهر
تهران
مدال المپیاد
برنز و طلای کامپیوتر !
دانشگاه
شریف
رشته دانشگاه
نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

میشه با رند کردن کل این عبارت عدد n ام رو بدست آورد؟ زیر 1 ثانیه جواب میده؟
با بیگ نام میتونی تا حدوده 10000 رو تو یه ثانیه پیدا کنی!
 

daneshvar.amrollahi

کاربر حرفه‌ای
ارسال‌ها
327
امتیاز
130
نام مرکز سمپاد
راهنمایی حلی۲/دبیرستان حلی۱۰/دبیرستان علامه طباطبایی
شهر
تهران
سال فارغ التحصیلی
1397
مدال المپیاد
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

سلام. اگر بخواهیم آخرین رقم غیر صفر فاکتوریل n رو بگیم چه راه هایی وجود داره؟ یعنی مثلا 5 فاکتوریل میشه 120 که باید 2 چاپ کنه
یه راه که به ذهنم میرسه ایته که عوامل 2 و 5 رو تا متونیم از هرکدوم بیرون شکیم(تقسیم) کنیم. اگر عوامل 1 یا 5 تمام شد، بقیه را حساب کنیم. اگر بقیه را بتوان به صورت عدد توان دار نوشت می توان یکان را با رابطه هایی سریع حساب کرد.
راه دیگری به ذهن کسی میرسه؟
 

baseri

F@|-|!mEh
ارسال‌ها
2,821
امتیاز
6,851
نام مرکز سمپاد
فرزانگان 6
شهر
تهران
سال فارغ التحصیلی
1394
مدال المپیاد
نانو
دانشگاه
علوم پزشکی البرز
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از daneshvar.amr :
سلام. اگر بخواهیم آخرین رقم غیر صفر فاکتوریل n رو بگیم چه راه هایی وجود داره؟ یعنی مثلا 5 فاکتوریل میشه 120 که باید 2 چاپ کنه
یه راه که به ذهنم میرسه ایته که عوامل 2 و 5 رو تا متونیم از هرکدوم بیرون شکیم(تقسیم) کنیم. اگر عوامل 1 یا 5 تمام شد، بقیه را حساب کنیم. اگر بقیه را بتوان به صورت عدد توان دار نوشت می توان یکان را با رابطه هایی سریع حساب کرد.
راه دیگری به ذهن کسی میرسه؟

به نظرم باقی مانده جواب n فاکتوریل رو دراره اگر صفر نبود چاپ کنه ، اگر بود هم تقسیم بر 10 کنه دوباره باقی مانده بگیره چاپ کنه :D فکر کنم این راحتتر باشه :-??
 

The Smith

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,061
امتیاز
3,545
نام مرکز سمپاد
سلام ایران‌زمین
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

@daneshvar : نه بابا اینطوری که فهیمه میگه کار اصلا عقلانی نیست.
تو تابستون ما ۲میلیون فاکوریله رو ۱۵ رقم سمت راستش که ۰ نبودن رو حساب کردیم :D
حدودا ۲۵۰ هزار تا صفر داشت سمت راست عدد.
حالا بگذریم.
یه آرایه بگیر که جواب فاکوریل رو تو اون بریزی و چک کن هروقت آخرین رقمت ۰ شد پاکش کن از تو آرایه.


(به نظرم از وکتور استفاده کن و جواب فاکتوریله رو برعکس نگه دار توش که بتونی از تهش ۰هارو پاک کنی.)
 
ارسال‌ها
687
امتیاز
915
نام مرکز سمپاد
راهنمایی حلی 2 - دبیرستان حلی10
شهر
تهران
سال فارغ التحصیلی
1397
دانشگاه
Shahed Uni
رشته دانشگاه
Computer Science
تلگرام
اینستاگرام
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

میشه یه بار دیگه سوال رو واضح تر یکی بگه !!؟؟ ~X(
 

rezaezio

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,167
امتیاز
1,956
نام مرکز سمپاد
حلّیِ 2
شهر
تهران
مدال المپیاد
برنز و طلای کامپیوتر !
دانشگاه
شریف
رشته دانشگاه
نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

مال سبحان هم عقلانی نیست !
http://paste.ubuntu.com/6926194/

از اردر n هست! تقریبا همون چیزیه که سبحان گفت، فقط لازم نیست رقم های 0 و رقم های قبل از آخرین رو نگه داری !
 

مهسا.ق

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,098
امتیاز
3,216
نام مرکز سمپاد
دبیرستان فرزانگان 1
شهر
تهران
مدال المپیاد
برنز کامپیوتر ۱۳۹۳
دانشگاه
دانشگاه تهران
رشته دانشگاه
نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از Damon :
مال سبحان هم عقلانی نیست !
از اردر n هست! تقریبا همون چیزیه که سبحان گفت، فقط لازم نیست رقم های 0 و رقم های قبل از آخرین رو نگه داری !
این کد و این الگوریتم غلط هست :)
15! رقمش بعد از حذف 0 می شه 8 ولی با الگوریتم و کد شما می شه 3
دلیلش هم واضحه ببین فک کن به یه جایی می رسی تو ضربی که می کنی یه رقم 0 ظاهر می شه
تو اینو حذف می کنی و می ذاری کنار و از رقمی که صفر نیس شروع می کنی ولی توی ضرب اگه این چن رقم شد با دهگان قبل هم جمع می شه مثلا ببین تا 14 این الگوریتم درست حساب می کنه رقم آخر 14! می شه 2 ینی
14!=87178291200
ولی تو تو برنامت فقط 2 رو نگه می داری بعد 2 رو ضرب در 15 می کنی می شه 30 و فقط 3 رو نگه می داری
در حالی که وقتی این عدده با 15 ضرب می شه یه سری جمع هم هست دیگه :-" (می دونم بعد توضیح دادم ولی خودت اون ضرب رو بکنی می فهمی چی می گم)

الگوریتمش همونیه که daneshvar.amr گفت تعداد عامل های 2 و 5 رو در می یاری
بعد به تعداد 5 ها از 2 ها کم می کنی
هر چی موند رو همین طوری که شما می گید ضرب می کنیم
http://paste.ubuntu.com/6926552/
یه همچین چیزی فک کنم درست باشه!(اگه باگ نزده باشم. ظاهرا که نزدم :-")
تازه خیلی جاهاشو می شه بهینه تر کرد که خیلی هم لزومی نداره که کار خودمونو سخت کنیم
چیزی که سبحان می گه هم بیگ نام می خواد و بیگ نامش واقعا فک کنم زیاد بشه تایمش نمی دونم
 

rezaezio

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,167
امتیاز
1,956
نام مرکز سمپاد
حلّیِ 2
شهر
تهران
مدال المپیاد
برنز و طلای کامپیوتر !
دانشگاه
شریف
رشته دانشگاه
نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

فهمیدم‌! دفاعی ندارم!‌ :))
اون tmp رو 7 + 9^10 کن، مُد 10 رو چاپ کن آخر، حدس میزنم تا جای خوبی رو درست جواب بده!‌ :‌دی

+
بعدا نوشت :‌
کدش رو زدم، تا 4^10،‌ کد من و تو یکی جواب میدادن! کدت تایمش خیلی خیلی زیاد شد، نتونستم با n های بالاتر چک کنم!
اگه کد سریع تر داری،‌ بده تا چک کنم الگوریتمم رو :د
+
صرفا جهت اطلاع‌ :‌ کد من حدودا تو 100000 خراب شد!
 

مهسا.ق

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,098
امتیاز
3,216
نام مرکز سمپاد
دبیرستان فرزانگان 1
شهر
تهران
مدال المپیاد
برنز کامپیوتر ۱۳۹۳
دانشگاه
دانشگاه تهران
رشته دانشگاه
نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از Damon :
فهمیدم‌! دفاعی ندارم!‌ :))
اون tmp رو 7 + 9^10 کن، مُد 10 رو چاپ کن آخر، حدس میزنم تا جای خوبی رو درست جواب بده!‌ :‌دی

+
بعدا نوشت :‌
کدش رو زدم، تا 4^10،‌ کد من و تو یکی جواب میدادن! کدت تایمش خیلی خیلی زیاد شد، نتونستم با n های بالاتر چک کنم!
اگه کد سریع تر داری،‌ بده تا چک کنم الگوریتمم رو :د
+
صرفا جهت اطلاع‌ :‌ کد من حدودا تو 100000 خراب شد!
ها؟ الگوریتمت چیه؟
تا 900000 که چک کردم کمتر از 1 ثانیه جواب می ده. الگوریتمتو بگو اگه مشکلی به ذهنم رسید بگم! کلا این الگوریتمه بدیهی ترین الگوریتم ممکنه. می شه یه کم بهترش کرد
 

rezaezio

کاربر فوق‌حرفه‌ای
ارسال‌ها
1,167
امتیاز
1,956
نام مرکز سمپاد
حلّیِ 2
شهر
تهران
مدال المپیاد
برنز و طلای کامپیوتر !
دانشگاه
شریف
رشته دانشگاه
نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

بالاتر گفتم، مقدار مُد رو به 7 + 9^10 تغییر بده !‌ بازم الگوریتم غلطه، ولی تا اگه n بین 1 تا 5^10 باشه، درست جواب میده!
مُد رو بزاری 7 + 15^10 ، کلی محدوده اینتیجر رو درست جواب میده! ;;)

+

کدت، اگه t تا کوئری بهش بدی، تایمش خیلی طول میکشه، یعنی هر کوئری رو (O(n زمان میگیره! که میشه (O(t.n ! واسه همین اگه t رو بزاری 5^10، داغون میشه ...
 
بالا