수학

    [백준 1322] X와 K (C++)

    1322번: X와 K 첫째 줄에 X와 K가 주어진다. X와 K는 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net X + Y = X | Y 위 식의 의미는 다음과 같다. 두 수를 2진수로 바꾸었을 때 x와 y가 가진 비트 '1'의 위치가 모두 서로 다르다는 뜻이다. 같은 말로 X의 비트가 0인 위치에만 1이 채워져 있는 수가 Y가 될 수 있는 수이다. 문제를 풀기 위해서는 위 아이디어를 다음과 같이 응용하면 된다. 7번째 Y 값을 찾고싶을 때 7은 2진수로 바꾸면 111 이다. X를 5로 가정하면 X는 ..000101 이라고 생각할 수 있다. 여기서 비트 1의 위치는 보지않고 0인 위치를 숫자가 들어갈 수 있는 위치라고 생각하자. 따라서 7이라는 숫자가 들어갈 수 있는 비..

    [백준 1644] 소수의 연속합 C++

    [백준 1644] 소수의 연속합 C++

    1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 수학, 두 포인터, 정수론 1. 문제풀이 아이디어 에라토스테네스의 체를 이용해서 N까지의 소수를 배열에 순서대로 저장한다. 배열의 마지막 소수를 ed 포인터, 그 이전 소수를 st포인터로 지정 st와 ed까지의 소수의 합을 sum으로 지정 처음에 sum = Prime_list[ed] + Prime_list[st]의 값으로 하고 sum > N이면 st와 ed가 같아질 때까지 sum -= Prime_list[ed]; ed--; 를 수행한다. st와 ed가 같아지면 st--; sum -= Prime_list[st]를 수행한다. (*순서중요!!) sum == N 이면 result++; 하..

    [백준 1111] IQ Test C++

    www.acmicpc.net/problem/1111 1111번: IQ Test 다음 수를 출력한다. 만약 다음 수가 여러 개일 경우에는 A를 출력하고, 다음 수를 구할 수 없는 경우에는 B를 출력한다. www.acmicpc.net 처음에 x가 0이 되는 경우를 깜박해서 ZeroDivisionError 가 발생했었다 같은 수가 연속으로 나올경우 x값이 0이 된다! 모든 점이 한 직선위에 있음을 알아차리고, 직선의 기울기와 y절편을 구한다 구한 기울기와 y절편이 모든 좌표 쌍에 적용된다면 a, b는 구해진 것임 그리고 N==1, N==2일때의 기저조건 예외처리를 해주고 마무리를 했다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2..