اولین باره که به کاهو میای؟ راهنمای سایت رو حتما بخون!

ورود ثبت‌نام راهنما درباره‌ی کاهو
پرسش‌ها برچسب‌ها کاربر‌ها سوال بپرسید!

آمار پرسش:

  • پرسیده شده: 2016-01-22 10:23:54 -0500
  • مشاهده شده: 232 بار
  • بروز شده: 2016-02-18 21:51:07 -0500

پرسش‌های مشابه:

وبسایت مسابقه‌های برنامه نویسی

یافتن کوتاه ترین دور در گراف ساده

راهنمایی برای برنامه نویسی

کد مساله هشت وزیر با استفاده از الگوریتم ژنتیک

مجموع ارقام ! 100

مرجع فارسی برای الگوریتم های هندسی و 2sat

نظریه اعداد لازم برای المپیاد کامپیوتری ها

برای مرحله سوم، تا چه سطحی باید برنامه نویسی بلد باشیم؟

اولین جمله از دنباله ی فیبوناچی که 1000رقم داشته باشد چیست؟

چه جاج‌هایی برای المپیاد کامپیوتر خوب هستند؟

نکاتی در مورد نوشتن پاسخ:

در این قسمت می‌تونی به یک پرسش پاسخ بدی. اگه می‌خوای در مورد پرسش بحث و اظهار نظر کنی از قسمت «ثبت نظر» استفاده کن.
پاسخت رو دقیق و کامل بنویس، از عکس استفاده کن و اگه لازمه به منابع (کتاب یا سایت) ارجاع بده.
اگه پرسش یا پاسخ‌ها مفید هستند حتما بهشون رای بده تا پرسش‌ها و پاسخ‌های خوب مشخص بشن.

استفاده از ویرایشگر:

توی قسمت پیش‌نمایش می‌تونی ببینی متنی که نوشتی چجوری روی سایت دیده میشه.
خیلی مهم: برای اینکه به خط بعد بری باید دوتا Enter بزنی.
می‌تونی از تگ‌های معمولی و ساده‌ی html هم استفاده کنی.
با دکمه‌هایی که بالای ویرایش‌گر قرار دارند کلی کار می‌شه کرد. از عکس‌گذاشتن بگیر تا لیست شماره‌دار. حتما امتحان‌شون کن.

علائم ریاضی:

برای نوشتن علائم ریاضی می‌تونی از Mathjax استفاده کنی. راهنمای Mathjax رو از سایت math.stackexchange بخون.
برای نوشتن عبارت ریاضی وسط جمله، اون عبارت رو بین دوتا $ قرار بده.
برای نوشتن عبارت ریاضی تو یه خط جدید اون رو بین دوتا $$ قرار بده.

مشکل تایم در سی این و سی اوت .

2

سلام.ببخشید یک سوال,برای کم کردن تایم cin و cout از printf و scanf استفاده کنیم بهتره دیگه؟چچوری استفاده کنم از این دو تا؟یه جا هم دیدم نوشته بود از(ios_base:sync_with_stdio(false استفاده کنیم .چجوری از این استفاده کنم؟اصلا درست هست دستورش یا اشتباه نوشتمش؟

برنامه-نویسی
2016-01-22 10:23:54 -0500
هویج بروکلی 65 ● 1 ● 10 ● 18
پاک‌کردن   ویرایش سوال
نظرات

چرا سرچ نمی کنین که مثلا چه جوری می شه از scanf استفاده کرد !؟ D:

2016-01-22 11:29:58 -0500 دان م

http://paste.ubuntu.com/14599089/ این مثال هست برای اینتیجر . برای چیزای دیگه هم مشابه با همینه . اگر خواستین همینجا بپرسین بگم D:

2016-01-22 11:43:55 -0500 دان م

خیلی ممتون.اخه برای استرینگ زدم نشد سرچ هم کردم احتمالا یه مشکل دیگه بوده.اون ios_base... چجوری استفاده میشه؟!

2016-01-23 04:51:52 -0500 هویج بروکلی

بخواین از اون دستور استفاده کنین فکر کنم دیگه از scanf , printf نباید استفاده کنین ... طریقه ی استفاده ی خاصی هم نداره ! http://paste.ubuntu.com/14607942/ اون دو تا دستور اضافی هم استفاده بشن بهتره باز D:

2016-01-23 07:33:40 -0500 دان م

برای scanf هم که بخواین استرینگ بگیرین یه همچین حالتی می شه :‌ http://paste.ubuntu.com/14607946/

2016-01-23 07:34:52 -0500 دان م

1 پاسخ

3

سلام :)

این سوال خیلی سوال معروفیه که بچه ها می‌پرسن، سعی می کنم کامل جواب بدم.

ما چند تا راه واسه گرفتن ورودی داریم که به ترتیب افزایش سرعت می‌گم.

Cin/Cout

اینا نسبتن کندن(تو جاج هایی مثل spoj که خیلی کندتر هم می‌شن).می‌شه با استفاده از این ۲ تا دستور سریع ترشون کرد:

  • ios::sync_with_stdio(0)

این به IOS می‌گه که ارتباط خودشو با stdio قطع کنه.(منطقن دیگه نمی‌تونی از scanf مثلن استفاده کنی بعد از این کار).

  • cin.tie(0) یا cin.tie(NULL)

این به cin میگه که flush نزنه، این جوری که شنیدم هر flush ، یه میلی ثانیه زمان می‌بره و خیلی برنامه رو کند می‌کنه.

واسه تو که نهمی هستی فک کنم همینا کافی باشه واقعن! ولی من بقیه رو هم توضیح می‌دم.

scanf/printf

اینا در حقیقت مال سی ان.واسه کار کردن باهاشون باید این (و این) رو بخونی و علاوه بر اون تجربه هم خیلی مهمه، چون گاهن کارای عجیب غریب می‌کنن.می‌شه گفت تایمشون از cin/cout حدودن دو برابر کم تره.

این بخشو در دسترس اطفال زیر ۳ سال قرار ندین!:

fast I/O

این چیز عجیبیه! اول باید بدونی که یه تابع داریم به نام getchar که میاد یه کاراکتر از ورودی می‌گیره و بر می‌گردونه.سرعت این تابع در مقایسه با cin حدود ۶ برابره!!

حالا باید چی‌کار کرد؟ مثلن اگه بخوای یه عدد از ورودی بگیری با getchar ، باید یه همچین کدی بزنی:

void in(int &x){
char INBUF;
while((INBUF=getchar())<'0');
for(x=INBUF-'0';(INBUF=getchar())>='0';x+=(x<<3)+x+INBUF-'0');
}

با یه کم فکر و تست کردن این کد به چیزای جالبی می‌رسی، در مقابل تابع putchar هست که یه کاراکتر رو خروجی می‌ده، برای خروجی دادن یه عدد با این تابع هم یه کد شبیه کد بالا باید بزنی.

2016-01-26 09:12:37 -0500
آرپا 947 ● 13 ● 15 ● 31
پاک‌کردن   ویرایش پاسخ
نظرات

خیلی خیلیییی ممنون:)

2016-01-26 10:27:01 -0500 هویج بروکلی

پاسخ شما

فقط در صورتی که پاسخی برای این پرسش دارید، آن را اینجا بنویسید و برای بحث کردن از قسمت «ثبت‌ نظر» استفاده کنید. شما می‌توانید قبل از وارد شدن به سایت پاسخ خود را بنویسید. این پاسخ ذخیره می‌شود و زمانی که شما وارد سایت شدید یا ثبت‌نام کردید منتشر می‌شود.

پیش‌نمایش:

کلیه‌ی حقوق این سایت متعلق به کمیته‌ی ملی المپیاد کامپیوتر است.