ای سی ام کار تازه وارد

در این وبلاگ مطالبی در مورد برخی الگوریتم ها و راهنمایی برای حل سوالات ارائه می گردد

ای سی ام کار تازه وارد

در این وبلاگ مطالبی در مورد برخی الگوریتم ها و راهنمایی برای حل سوالات ارائه می گردد

118 - Digital Root

دوشنبه, ۵ تیر ۱۳۹۱، ۰۶:۲۷ ق.ظ

لینک سوال


مفهوم سوال :

سوال یه دنباله از اعداد به ما میده به عنوان A .

بعد حاصل جمع "دیجیتال روت"  مقادیر زیر رو می خواد :

A1

A1 * A2

A1 * A2 * A3

.

.

A1 * ... * An

منظور از دیجیتال روت : مقدار حاصل جمع تمام ارقام یه عدد هست ، اگه این مقدار بزرگتر از 10 باشه ، تا زمانی که حاصل از 10 کوچکتر نشده ، این کار باید انجام بشه ،

مثلا D( 123 ) = 6 یا D( 991 ) = 1 .


حل :

لازمه بدونید که :

D( a + b ) = d(a) + D(b) and

D( a * b ) = D( a ) * D( b )  for each a , b .


اثباتش سخت نیست ، چند تا مثال عددی بزنید تا ببینید چه اتفاقی می افته .

برای حل زمان گرفتن ورودی ها ، به جای هر عدد ، digit_root هر عدد رو ذخیره کنید .

بعد جواب رو حساب کنید .

من برای حل یه آرایه dynamic در نظر گرفتم که مثلا DPi برابر بود با حاصل ضرب i جمله اول دنباله A .

بعد از این کار ، دوباره مقدار های DP رو اپدیت می کنم به صورتی که DPi  برابر میشه با حاصل جمع i  جمله اول آرایه DP .

جواب مساله DPn هستش.

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


به اون 2 تا رابطه ای که بالا گفتیم ، می گن همریختی .


معمولا برای سوال هایی که یه نوع رابطه جدید تعریف می کنن ، لازمه چک کنیم که همریختی هست یا نه ، اگه باشه یه سری خاصیت خوب داره که می تونیم ازشون استفاده کنیم .



موافقین ۰ مخالفین ۰ ۹۱/۰۴/۰۵
رضا حسینی آشتیانی 118 Digital Root acm.sgu.ru

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی