알고리즘/백준 문제풀이

[Python/BOJ] 백준 1407 2로 몇 번 나누어질까_수학

개발자 덕구🐾 2022. 8. 25. 15:17
728x90

 

 

 

완탐으로 열심히 풀어봤지만

결과는 메모리초과..시간 초과...... 

 

문제의 분류를 보니 수학이었다. 

역시 완탐이 아니라 머리를 써서 공식을 알아내야하는 문제다. 

 

 

 

 

 

코드 : 

def cal(num) :
    if num ==0 : return 0
    elif num == 1 : return 1 
    elif num %2 ==0 : return num // 2 + 2*cal(num//2)
    elif num %2 == 1 : return num //2 + 2*cal(num//2) +1 

if __name__=="__main__" :
    a,b = map(int,input().split())
    
    print(cal(b) - cal(a-1))

 

 

이런 수학 문제가 코테에 나오나......

 

 

 

 

 

 

 

 

참고 블로그 : 

https://dkrnfls.tistory.com/84

 

2로 몇 번 나누어질까[백준 1407] - python

이 문제는 크로아티에서 고등학생 대상으로 나온 문제다. 상당히 애를 먹었던 문제다.(아직 멀었나 보다) 코드 먼저 살펴보자 a,b = map(int, input().split()) def calc(number) : if number == 0 : return 0 el..

dkrnfls.tistory.com

 

반응형