motivation ¶
몇명ì�„ ì œì™¸í•˜ê³¤ 다들 루프를 ㅤㅆㅓㅅì�„것 같아 다른 방법ì�„ ìƒ�ê°�해보았다. ë‚´ 코드를 다 ì§œê³ ë³´ë‹ˆ 현태와 ë³´ì°½ì�´ê°€ 가우스ì�˜ 방법ì�„ ì�¨ì„œ summation ì�„ 구한걸 ë³¼ 수 있었다. ê³ ë“±í•™êµ� ì‹œì ˆì�„ ë– ì˜¬ë¦° 모양ì�´ì—ˆë‹¤. 난 조금 ë�” 시간ì�„ 거슬러 올ë�¼ê°€ 중학êµ� ì‹œì ˆë¡œ 올ë�¼ê°”다. ë¬¸ì œì—�서 요구하는게, ~~ì�´ìƒ�ì�¸ 최소 ì •ìˆ˜(사실 ì�´ ë¬¸ì œì—�서는 범위가 ì •ìˆ˜ê°€ 아닌 ìž�연수로 ì œí•œë�˜ì–´ ìžˆë‹¤ê³ ë³´ëŠ”ê²Œ ë�” ì •í™•í•˜ë‹¤)를 구하ë�¼ì�¸ë�°, ì�´ë¥¼ ë³´ê³ ë¶ˆí˜„ë“¯ 부등ì‹�ì�´ ìƒ�ê°�나 바로 ì �용하였다. 처ì�Œì—�는 DivideAndConquer 를 ìƒ�ê°�í•´ 보기ë�„ 했는ë�° ì˜� 시ì›�치가 않았다가 ë°œìƒ�ì�˜ ì „í™˜ì�„ ì�´ë£¬ê²Œ ë�„움ì�´ ë�˜ì—ˆë‹¤.
시간복잡�는 O(1) �다. 호호호
시간복잡�는 O(1) �다. 호호호

ì½” 드 ¶
~cpp
import unittest
import math
def summation(num):
return num*(num+1)/2
def eq_2(a,b,c):
_2a = 2*a
_b_4ac = math.sqrt(b*b-4*a*c)
hae1 = (-b + _b_4ac) / _2a
hae2 = (-b - _b_4ac) / _2a
return hae1, hae2
def minint(num):
hae1, hae2 = eq_2(1.0, 1.0, (float)(-2*num))
hae = (int)(max(hae1, hae2))
sum = summation(hae)
if( sum < num ):
return hae+1, summation(hae+1)
else:
return hae, sum
class TestMinInt(unittest.TestCase):
def testSummation(self):
self.assertEquals(55, summation(10))
self.assertEquals(10, summation(4))
self.assertEquals(5050, summation(100))
self.assertEquals(500500, summation(1000))
if __name__=='__main__':
#unittest.main(argv=('','-v'))
print minint(3000)










