کوچکترین مضرب
در این تمرین، به شما دو عدد صحیح مثبت، p و d داده میشود. هدف شما پیدا کردن کوچکترین مضرب عدد d است که وقتی بر عدد p تقسیم میشود، باقیماندهای بین 0 تا p/2 (شامل هر دو مقدار) داشته باشد.
عدد
pهمواره زوج خواهد بود و باقیماندهی موردنظر میتواند دقیقاً برابر باp/2باشد.
💡 راهنمایی ۱: دریافت ورودی
میتوانید به سادگی دو عدد را که در یک خط و با فاصله از هم جدا شدهاند، به صورت زیر دریافت کنید:
p, d = input().split()
p = int(p)
d = int(d)
تابع .split() این خط متن را بر اساس فاصله به یک لیست از رشتهها تبدیل میکند و دو عضو اول لیست را بهترتیب به متغیرهای p و d نسبت میدهد. سپس با استفاده از تابع int() رشتههای p و d به اعداد صحیح تبدیل میشوند.
💡 راهنمایی ۲
برای حل این تمرین، میتوانید از یک حلقهی while استفاده کنید. در این حلقه، مضارب متوالی عدد d را بررسی کنید. برای هر مضرب، باقیماندهی آن را بر p محاسبه کنید. به محض اینکه مضربی پیدا کردید که باقیماندهاش در محدودهی 0 تا p/2 قرار داشت، آن مضرب را بهعنوان پاسخ چاپ کرده و حلقه را متوقف کنید. به یاد داشته باشید که برای محاسبهی باقیمانده در پایتون میتوانید از عملگر % استفاده کنید.
📥 ورودی
ورودی برنامه یک خط است که شامل اعداد p و d است. d نشاندهندهی عددی است که به شما داده شده تا کوچکترین مضرب از آن را با رعایت شرط دادهشده، پیدا کنید. دقت کنید که عدد p زوج است.
2 ≤ p ≤ 100
1 ≤ d ≤ 1000
📤 خروجی
برنامه باید در خروجی، کوچکترین مضرب d را چاپ کند که شرط باقیمانده (بین 0 تا p/2) را برآورده سازد.
🎯 نمونه
ورودی ۱
8 7
خروجی ۱
28
مضرب اول
d، یعنی7×1=7. باقیماندهی7بر8برابر7است که بزرگتر از8/2=4است. مضرب دومd، یعنی7×2=14. باقیماندهی14بر8برابر6است که بزرگتر از4است. مضرب سومd، یعنی7×3=21. باقیماندهی21بر8برابر5است که بزرگتر از4است. مضرب چهارمd، یعنی7×4=28. باقیماندهی28بر8برابر4است که کوچکتر یا مساوی8/2=4است. بنابراین،28کوچکترین مضرب7است که شرط را دارد.
ورودی ۲
6 541
خروجی ۲
541
مضرب اول
d، یعنی541×1=541. باقیماندهی541بر6برابر1است که کوچکتر یا مساوی6/2=3است. بنابراین،541خود کوچکترین مضرب است که شرط را دارد.
ورودی ۳
4 31
خروجی ۳
62
مضرب اول
d، یعنی31×1=31. باقیماندهی31بر4برابر3است که بزرگتر از4/2=2است. مضرب دومd، یعنی31×2=62. باقیماندهی62بر4برابر2است که کوچکتر یا مساوی2است. بنابراین،62کوچکترین مضرب31است که شرط را دارد.
💡 راهنمایی نهایی
ساختار کلی برنامه به این شکل است:
p, d = input().split()
p = int(p)
d = int(d)
limit = p // 2
multiplier = 1
while True:
multiple = d * multiplier
remainder = multiple % p
if remainder <= limit:
print(multiple)
break
multiplier += 1
دقت کنید که باقیمانده باید بین
0تاp/2باشد، یعنیremainder≤limit.
✅ این تمرین را در ویرایشگر خود کپی کنید و با ورودیهای مختلف تست کنید.
نمونهها
8 7
28
6 541
541
4 31
62
برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.
ورود