ارسال ها
143
لایک ها
79
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

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

یه متغیر مثل t تعریف می کنیم و هر دفعه با توان های 2(2و4و8و...) جمعش می کنیم هر وقت از k بیشتر شد اون توانی که بیشتر شد رو i در نظر می گیریم و پس عددمون i-1 رقم داره حالا با تولید جایگشت های 7و4 ، i رقمی عدد مورد نظر رو پیدا می کنیم (که درواقع
اُمین عدد i رقمی هست....)

درسته؟!
درسته الگوریتم .

من یه سری تست دیتا هم درست کردم براش , کدتون رو که نوشتین با اینها جاج کنید :

Input :
1

2

6

30

57

64

90

127

1024

5757

8191

15768

449876

187634901

268435455

987284619

1000000000




Output :

4

7

77

7777

77474

444447

477477

4444444

4444444447

477447777774

4444444444444

7774774477447

747747774747474747

477447477774447474477474774

4444444444444444444444444444

77474774774447744474474447744

77477744774747744747444444447



 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

سوال بعدی : در ایران باستان اعداد 4 و 7 اعداد خوش شانس به حساب می آمدند و به عددی که تنها از 4و 7 تشکیل می شد , عدد خوش یمن می گفتند .

به عنوان مثال , 5 عدد خوش یمن اول به صورت رو به رو هستند : 4 و 7 و 44و 47 و 74

برنامه ای بنویسید که k امین عدد خوش یمن را چاپ کند .

محدودیت : k بین 1 و 1000 * 1000 * 1000 می باشد .
 
ارسال ها
143
لایک ها
79
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

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

من کد خودم رو هم می فرستم , یه کم با عملگر های بیتی آشنا بشید.

Code

از اینجا عملگر های مبنای 2 رو یاد بگیرید ( & و | و ^ و >> و << ) :

Cprogramming.com - Tutorials - Bitwise Operators and Bit Manipulations in C and C++



یه نمونه استفاده از بیت کاری و مبنای 2 :
توی حل یه سری از سوال ها , مجبور می شید همه زیر مجموعه های یک مجموعه N تایی رو بررسی کیند . یه راه استفاده از بک ترک هست . ولی یه ایده دیگه اینه که For ببندید از 0 تا 2 به توان n منهای 1 و هر عدد توی این For , یک مجموعه n بیتی می شه که هر بیت نماینده یک عضو مجموعه اصلی مون می شه و می تونید خیلی راحت چک کنید همه زیر مجموعه ها رو (اگه صفر بود بیته یعنی نیست و اگه 1 بود یعنی هست) .

پس سوال (های) بعدی این می شه :

0 - برنامه ای بنویسید که عدد n , k را از ورودی گرفته و اگر بیت k ام نمایش مبنای 2 عدد n یک بود True و در غیر این صورت False چاپ کند .

1 - برنامه ای بنویسید که همه زیر مجموعه های {1, 2, ..., 10} را چاپ کند .

2 - برنامه ای بنویسید که 7 عدد (کمتر از 70) از ورودی گرفته (مجموعه A) , تعداد اعدادی که می توان آن ها را بر حسب مجموع اعضای متمایز مجموعه A نوشت را بدست بیاورد .


بیت کاری و آشنا بودن به عملگر های بیتی به دردتون خواهد خورد توی مرحله بعد , جدی بگیرید !

 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
پاسخ : آمادگی برای مرحله ۳



0 - برنامه ای بنویسید که عدد n , k را از ورودی گرفته و اگر بیت k ام نمایش مبنای 2 عدد n یک بود True و در غیر این صورت False چاپ کند .

1 - برنامه ای بنویسید که همه زیر مجموعه های {1, 2, ..., 10} را چاپ کند .

2 - برنامه ای بنویسید که 7 عدد (کمتر از 70) از ورودی گرفته (مجموعه A) , تعداد اعدادی که می توان آن ها را بر حسب مجموع اعضای متمایز مجموعه A نوشت را بدست بیاورد .

این هم کدهای من برای 3 تا سوال :

کد 0

کد 1

کد 2
 
آخرین ویرایش توسط مدیر
ارسال ها
143
لایک ها
79
امتیاز
0
ارسال ها
143
لایک ها
79
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

کدتون کاملا درسته ولی داینامیک زدن تقلب محسوب می شه ! من هدفم این بود که کدی بنویسید که همه حالت ها رو چک کنه . (ولی اینکه داینامیک بلدید خوبه)
 

erfankh

New Member
ارسال ها
202
لایک ها
89
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

کدتون کاملا درسته ولی داینامیک زدن تقلب محسوب می شه ! من هدفم این بود که کدی بنویسید که همه حالت ها رو چک کنه . (ولی اینکه داینامیک بلدید خوبه)
شرمند اخه نگفته بودید ایشاالله از دفعه بعد
========================
سوال اولی:
[C++] prob-1 - Pastebin.com
 
ارسال ها
143
لایک ها
79
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

مرسی که وقت گذاشتید و کدها رو نوشتید .
برنامه هاتون رو فعلا نتونستم تست کنم و دقیق بخونم کد ها رو ولی به احتمال زیاد همشون درست هستن.

درباره سوال 0 ام :

برنامه هاتون کاملا درست بود , ولی هدفم آشناییتون با عملیات های مبنای 2 بود .

Irysc_Bitwise_0

خوبه اگه وقت داشتید , سوال های 1 و 2 رو با توجه به کد سوال 0 , بازنویسی کنید.

 
آخرین ویرایش توسط مدیر

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

مرسی که وقت گذاشتید و کدها رو نوشتید .
برنامه هاتون رو فعلا نتونستم تست کنم و دقیق بخونم کد ها رو ولی به احتمال زیاد همشون درست هستن.

درباره سوال 0 ام :

برنامه هاتون کاملا درست بود , ولی هدفم آشناییتون با عملیات های مبنای 2 بود .

Irysc_Bitwise_0

خوبه اگه وقت داشتید , سوال های 1 و 2 رو با توجه به کد سوال 0 , بازنویسی کنید.

ایده ی جالبی بود !!! :4::36:

بازنویسی مسئله ی 1 با توجه به مسئله ی 0
 
ارسال ها
143
لایک ها
79
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

من 64 به دست آوردم ... اگه درسته بگید کدم رو بذارم ؟! .... :36:
یکم زیاده عددتون... (حواستون باشه تکراری نشمارید) .

پ.ن : یه راه برای اینکه مطمئن باشید جوابتون درسته توی این مسئله اینه که مثلا بگید اون 64 عدد رو چاپ کنه برنامه تا ببینید تکراری هست یا نیست.
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
پاسخ : آمادگی برای مرحله ۳

منم 61 بدست آوردم کدمم اینه : ( اینو از تغییر سوال 2 قسمت قبل بدست آوردم)

کد سوال بارم بندی
 
آخرین ویرایش توسط مدیر
بالا