HW2.pdf

‫تمرین سری دوم‬
‫تاریخ تحویل تمرین ‪ 3‬آبان ‪1392‬‬
‫درس مبانی برنامهسازی‬
‫‪CE153‬‬
‫‪Sharif University of Technology‬‬
‫‪Fall 2013‬‬
‫‪1‬‬
‫توضیحات اولیه‬
‫‪ ‬آخرین مهلت تحویل تمرین‪ ،‬ساعت ‪ 23:59‬دقیقه روز جمعه‪ ،‬سوم آبان ماه می‬
‫باشد‪.‬‬
‫‪ ‬بعد از اتمام زمان ارسال‪ ،‬تا ‪ 3‬روز می توانید تمرین های خود را با تاخیر ارسال‬
‫نمایید‪ .‬به ازای هر ساعت تاخیر ‪ 1%‬از نمره ی شما کسر می شود‪.‬‬
‫‪ ‬خروجی تمرین ها فقط موارد خواسته شده باشد‪.‬‬
‫‪2‬‬
‫توضیحات اولیه ‪...‬‬
‫‪ ‬برای‬
‫فرستادن‬
‫تمرین‬
‫ها‬
‫از‬
‫سامانه‬
‫داوری‬
‫شریف‬
‫(به‬
‫آدرس‬
‫)‪ http://judge.ce.sharif.ir/92-93-1/ce153-1-2‬استفاده شده است‪.‬‬
‫‪ ‬طی هفته ی آینده ایمیلی برای شما ارسال خواهد شد که در آن نام کاربری و رمز‬
‫عبورتان اعالم می شود‪ .‬سپس شما باید با استفاده از این اطالعات وارد سامانه ی داوری‬
‫شریف شوید و تمرین خود را آپلود کنید‪.‬‬
‫‪ ‬فراموش نکنید حتماً بعد از اولین ورود رمزعبور خود را تغییر دهید‪.‬‬
‫‪ ‬در صورت هرگونه مشکل در خصوص تمرین‪ ،‬سواالت خود را در پیازا مطرح کنید‪.‬‬
‫‪3‬‬
‫سوال اول‬
‫نیما می خواهد بداند در چه روزی از هفته (شنبه‪ ،‬یک شنبه‪ )... ،‬اتفاقات مهم‬
‫آینده (مثل خط مرگ تمرین ها یا بازی های استقالل) اتفاق خواهد افتاد و‬
‫یا در گذشته اتفاق افتاده است‪ .‬برنامه ای بنویسید که به او کمک کند این‬
‫محاسبه را انجام دهد‪ .‬این کار با دادن یک تاریخ که روز آن معین است (مثال‬
‫تاریخ امروز و سپس اینکه امروز چند شنبه است) و یک سال که می دانیم‬
‫کبیسه است انجام می گیرد‬
‫تاریخ ها بر حسب میالدی است‪ .‬تعداد روزهای ماه های میالدی را می توانید‬
‫از تقویم ویندوز پیدا کنید‪ .‬تفاوت سال های کبیسه ی میالدی را در اینترنت‬
‫پیدا کنید‪.‬‬
‫‪4‬‬
‫سوال اول‬
‫‪ ‬ورودی ‪ :‬در خط اول ‪ 4‬ورودی داریم که به ترتیب ‪ :‬سال‪ ،‬ماه‪ ،‬روز و یک‬
‫عدد بین ‪ 0‬تا ‪ 6‬است که معین می کند این تاریخ معین چند شنبه است‬
‫است)‬
‫جمعه‬
‫معادل‬
‫‪6‬‬
‫و‬
‫شنبه‬
‫معادل‬
‫(‪0‬‬
‫در خط دوم یک سال که می دانیم کبیسه است وارد می شود‬
‫در خط سوم ‪ 3‬عدد که به ترتیب سال ماه و روز مجهول است‬
‫‪ ‬خروجی ‪ :‬بعد از محاسبه ی اینکه روز مجهول چند شنبه است ‪ ،‬یکی از‬
‫حاالت زیر را در خروجی چاپ می کنیم ‪:‬‬
‫}‪{shanbe,1shanbe,2shanbe,3shanbe,4shanbe,5shanbe,jom’e‬‬
‫‪5‬‬
‫سوال اول‬
‫‪ ‬ورودی نمونه‪:‬‬
‫ورودی نمونه‬
‫خروجی نمونه‬
‫‪2013 10 15 3‬‬
‫‪2012‬‬
‫‪2013 10 13‬‬
‫‪1shanbe‬‬
‫‪6‬‬
‫سوال دوم‬
‫‪ ‬تابع 𝑛 𝑓 به این صورت تعریف می شود‪:‬‬
‫کم ارزش ترین رقم ناصفر عدد !𝑛‬
‫در نظر داشته باشید که !𝑛 عددی طبیعی است‪.‬‬
‫‪ n! = n * (n-1) * … * 2 * 1‬‬
‫‪ ‬محدودیت ها ‪:‬‬
‫‪0 ≤n ≤65536‬‬
‫‪ ‬ورودی و خروجی‪:‬‬
‫در تنها خط ورودی ‪ 3‬عدد ‪ a b c‬آمده است‪ .‬در تنها خط خروجی باید‬
‫)‪ f(a) f(b) f(c‬چاپ شود‪.‬‬
‫‪7‬‬
‫سوال دوم‬
‫‪ ‬نمونه ی ورودی و خروجی‬
‫ورودی نمونه‬
‫خروجی نمونه‬
‫‪10 11 12‬‬
‫‪886‬‬
‫‪ ‬در مثال باال داریم‬
‫‪10! =3628800‬‬
‫‪11! = 39916800‬‬
‫‪12! = 479001600‬‬
‫‪8‬‬
‫سوال سوم‬
‫‪ ‬برنامه ای بنویسید که در ابتدا یک عدد ‪ n‬از کاربر بگیرد ‪ ،‬سپس ‪ n‬عدد‬
‫دریافت کند و به ازای آنها نتیجه ی محاسبه ی فرمول زیر را چاپ کند‪.‬‬
‫در صورتی که جواب از ‪ 7+109‬بزرگتر بود‪ ،‬باقیمانده ی محاسبه ی جواب‬
‫بر ‪ 7+109‬را چاپ کند‪.‬‬
‫)‪ ∑aiaj(i≠j‬‬
‫‪ ‬محدودیت ها ‪:‬‬
‫همه ی اعداد کوچکتر از ‪ 7+109‬هستند‪.‬‬
‫‪1 ≤n ≤1000000‬‬
‫‪ ‬ورودی و خروجی‬
‫در خط اول ابتدا یک عدد ‪ n‬آمده سپس در خط بعدی ‪ n‬عدد می آیند‬
‫که با یک فاصله از هم جدا شده اند‬
‫‪9‬‬
‫سوال سوم‬
‫‪ ‬نمونه ی ورودی و خروجی‬
‫ورودی نمونه‬
‫خروجی نمونه‬
‫‪3‬‬
‫‪321‬‬
‫‪22‬‬
‫‪5‬‬
‫‪33333‬‬
‫‪180‬‬
‫‪ ‬در مثال باال داریم‬
‫‪1×2+1×3+2×1+2×3+3×1+3×2=22‬‬
‫‪10‬‬
‫سوال چهارم‬
‫‪ ‬برنامه ای بنویسید که ابتدا یک عدد ‪ a‬و عدد ‪ b‬را از کاربر بگیرد و بگوید‬
‫که عدد ‪ a‬در مبنای ‪ b‬آینه ای هست یا خیر‪ .‬یک عدد آینه ای است اگر‬
‫از هر دو طرف مثل هم خوانده شود‪ .‬مثال عدد ‪ 11011‬آینه ای هست ‪،‬‬
‫اما اعداد ‪ 110‬و ‪ 314‬آینه ای نیستند‪.‬‬
‫‪ ‬محدودیت ها‪:‬‬
‫‪10≤ b ≤2‬‬
‫‪7+109 ≤ a ≤ 1‬‬
‫‪ ‬ورودی و خروجی‬
‫در خط اول ورودی دو عدد آمده است که با یک فاصله از هم جدا شده‬
‫اند‪.‬‬
‫در خروجی یکی از دو رشته ی ‪ Yes‬یا ‪ No‬را چاپ کنید‪ ( .‬به بزرگی و‬
‫کوچکی حروف دقت کنید‪).‬‬
‫‪11‬‬
‫سوال چهارم‬
‫‪ ‬ورودی و خروجی نمونه‬
‫ورودی‬
‫خروجی‬
‫‪72‬‬
‫‪Yes‬‬
‫‪12 2‬‬
‫‪No‬‬
‫‪90 9‬‬
‫‪Yes‬‬
‫‪81 9‬‬
‫‪No‬‬
‫‪ ‬در مثال های زیر داریم‬
‫‪(1100)2=12 , (111)2=7 , (11)9=90 , (10)9=81‬‬
‫‪12‬‬