PDA

View Full Version : سوال: راهنمایی برای حل یک برنامه



asma khanum
یک شنبه 21 تیر 1388, 17:33 عصر
سلام دوستانی که هم انگلیسی و هم برنامه نویسی تون خوبه لطفا به من کمک کنین خواهشا!


من متن این برنامه رو تقریبا فهمیدم خیلی ساده به نظر میرسه فقط اون قسمتی که i,j رو گفته به عنوان ورودی دریافت می کنه رو نفهمیدم.بعد از اینکه زوج و فرد بودن عدد رو تسخیص دادیم اون اعمال هم روش انجام دادیم عدد حاصل ماکزیمم تعداد اعمالی که روی هر ورودی انجام دادیم هست؟؟یا کلا یه چه چیز دیگه هست من که رابطه ای نتونستم پیدا کنم بین ورودی ها و خروجی ها!!!




Consider the following algorithm to generate a sequence of numbers. Start with an
integer n. If n is even, divide by 2. If n is odd, multiply by 3 and add 1. Repeat this
process with the new value of n, terminating when n = 1. For example, the following
sequence of numbers will be generated for n = 22:
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
It is conjectured (but not yet proven) that this algorithm will terminate at n = 1 for
every integer n. Still, the conjecture holds for all integers up to at least 1, 000, 000.
For an input n, the cycle-length of n is the number of numbers generated up to and
including the 1. In the example above, the cycle length of 22 is 16. Given any two
numbers i and j, you are to determine the maximum cycle length over all numbers
between i and j, including both endpoints.
Input
The input will consist of a series of pairs of integers i and j, one pair of integers per
line. All integers will be less than 1,000,000 and greater than 0.
Output
For each pair of input integers i and j, output i, j in the same order in which they
appeared in the input and then the maximum cycle length for integers between and
including i and j. These three numbers should be separated by one space, with all three
numbers on one line and with one line of output for each line of input.
Sample Input
1 10
100 200
201 210
900 1000
Sample Output
1 10 20
100 200 125
201 210 89
900 1000 174

amirh_karimifar
دوشنبه 22 تیر 1388, 00:41 صبح
خوب این برنامه نمیخواد الگوریتم میخواد ! که برنامشم زیاد سخت نیست !
میگه فرض کنید الگوریتمی وجود داره که یک سری اعداد رو محاسبه میکنه ! به این ترتیب که سری با عدد صحیح N شروع میشه ، اگر N زوج بود فقط اونو تقسیم بر دو میکنه ! و اگر فرد بود ضربدر 3 میکنه و یک واحد اضافه میکنه ! این کار رو اینقدر ادامه میده تا مقدار جدید N برابر یک بشه !
خوب تا اینجاش که کاری نداره با یک حلقه while و یک if...else حل میشه !
از اینجا به بعد میگه ! برای هر N طول حلقه وجود داره ! منظورش تعداد اعداد دنباله است که مثالم زده واسش ! که مقدارشم بین 1 تا 100000 . میگه حالا یک زوج عدد i , j وجود داره ! که دو عددند که حد بالا و حد پایینه مقدار n میکنند !
حالا کار اصلی اینه که دو عدد i , j رو به عنوان ورودی گرفته و تمام طول حلقه ها رو رای اعداد بین i, j محاسبه کنیم . یعنی مثلا دو عدد 10 و 100 رو بدیم باید تک تک اعداد بین 1 تا 100 رو با الگوریتم اول به یک برسونیم ! بعد بگیم کدوم عدد با بیشترین طول دنباله به یک میرسه !
خروجی ما میشه همون دو عدد اول و عدد ماکزیمم !
حالا این کاری که ما میکنیمه ! سعی میکنم تا فردا برنامشم بنویسم !

asma khanum
دوشنبه 22 تیر 1388, 09:14 صبح
سلام اقاي كريمي فر خيلي ممنون بابت جوابتون خيلي مفيد بود بازم تشكر مي كنم
راستش نوشتن برنامش اسونه من روي سوال مشكل داشتم نفهميده بودم

amirh_karimifar
دوشنبه 22 تیر 1388, 13:18 عصر
خواهش . امیدولرم توضیحم کامل و مفید بوده باشه و مشلتونو حل کرده باشه !