المپیاد کامپیوتر

ترکیبیات,برنامه نویسی,گراف,الگوریتم , و کلا کامپیوتر

المپیاد کامپیوتر

ترکیبیات,برنامه نویسی,گراف,الگوریتم , و کلا کامپیوتر

المپیاد کامپیوتر
دنبال کنندگان ۳ نفر
این وبلاگ را دنبال کنید

سوال ششم Project Euler(همراه راه حل)

سه شنبه, ۱۹ دی ۱۳۹۱، ۱۱:۳۱ ق.ظ

متن سوال:

حاصل جمع  مجذور اعداد 1 تا 10 برابر است با

12 + 22 + ... + 102 = 385

و مجذور حاصل جمع تمام اعداد 1تا 10 برابر است با 

(1 + 2 + ... + 10)2 = 552 = 3025

اختلاف حاصل جمع  مجذور اعداد 1 تا 10 و مجذور حاصل جمع تمام اعداد 1تا 10 برابر است با 385 − 3025 = 2640

پیدا کنید اختلاف حاصل جمع  مجذور اعداد 1 تا 100 و مجذور حاصل جمع تمام اعداد 1تا 100.

روش اول:

مثل همیشه تک تک رو حساب می کنیم.این یکی خیلی راحته.

اینم کدش:

int sum = 0;
int squared = 0;
int result = 0;
const int N = 100
 
for (int i = 1; i     sum += i;
    squared += i * i;
}
result = sum * sum - squared;
روش دوم:
هیمین طور که می دونید برای شمردن جمع عدد های یک تا n فرمول زیر حاکم است.
\displaystyle S_n = \frac{n(n 1)}{2}
و همچنین برای توان دو ین فرمول برقراره:
\displaystyle S_n^2 = \frac{n(n 1)(2n 1)}{6}
خب کد زدن این روش هم آسونه:
long sum = 0;
long squared = 0;
long result = 0;
 
const int N = 100;
 
sum = N * (N+1)/ 2;
squared = (N * (N + 1) * (2 * N + 1)) / 6;
 
result = sum * sum - squared;
جواب برابر است با:25164150

نظرات (۰)

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