목록수학 (19)
STUDY_SEONMIN
조규현의 좌표 (x1, y1)와 백승환의 좌표 (x2, y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. T = int(input()) for _ in range(T): x1, y1, r1, x2, y2, r2 = map(int,input().split()) d = ((x2-x1)**2 + (y2-y1)**2)**0.5 if d == 0 and r1 == r2: print(-1) else: if d > r1+r2 or d < abs(r2-r1): print(0) elif d == r1+r2 or d..
19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다. 택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다. D(T1,T2) = |x1-x2| + |y1-y2| 두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다. 따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다. 원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합 반지름 R이 주어졌을 때, 유클리드 기하학에서 원의 넓이와, 택시 기하학에서 원의 넓이를 구하는 프로그램을 작성하시오. import math pi = math.pi R = int(input()) print('{:.6f}'.format(R**2*pi)) prin..
과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오. while True: x, y, z = map(int,input().split()) if x+y+z == 0: break line = [x, y, z] line.sort() if line[0]**2+line[1]**2 == line[2]**2: print('right') else: print('wrong') 주어진 세변의 길이 중 가장 긴변의 길이의 제곱이 나머지 변의 제곱합과 동일하면 피타고라스 정리의 역에 의해서 직각삼각형이 됩니다. 이 원리를 이용해서 조건에 부합하면 'right' 그렇지 않으면 'wrong'을 출력하도록 프로그램을 구현했습니다.
세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. x1, y1 = map(int, input().split()) x2, y2 = map(int, input().split()) x3, y3 = map(int, input().split()) x, y = [x1, x2, x3], [y1, y2, y3] for i in x: if x.count(i) == 1: x4 = i break for j in y: if y.count(j) == 1: y4 = j break print(x4, y4) 직사각형의 성질을 생각해보면 직사각형의 네 꼭지점의 좌표들은 (x1, y1), (x1, y2), (x2, y1), (x2,y2) 와 같은 형태를 지니게 됩니다. 이는 ..
한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. x, y, w, h = map(int,input().split()) d = [abs(w-x), abs(h-y), x, y] print(min(d)) (x,y)에서 직사각형 경계 사방까지의 거리는 각각 |w-x|, |h-y|, x, y 입니다. 이 중에서 가장 최솟값을 구하면 문제에서 요구하는 경계까지 거리의 최솟값을 구할 수 있습니다.
1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. 예를 들면, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7이다. 10000보다 작거나 같은 모든 짝수 n에 대한 골드바흐 파티션은 존재한다. 2보다 큰 짝수 n이..
베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) 자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. $ 1 \le n \le 123,456 $ N = 123456*2 sieve = [True]*(N+1) m = int(N**0.5) for i in range(2, m+1): if sieve[..
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.($1 \le M \le N \le 1,000,000$) - 에라토스테네스의 체를 이용하세요. n = 1000000 sieve = [True] * (n+1) m = int(n**0.5) for i in range(2, m+1): if sieve[i] == True: for j in range(i+i, n+1, i): sieve[j] = False sieve[0], sieve[1] = False, False M, N = map(int, input().split()) for i in range(M, N+1): if sieve[i] == True: print(i) 먼저 구하고자하는 범위에 대해 에라토스테네스의 체를 만들어줍니다. - sieve[i]가 ..
정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. N = int(input()) i = 2 while N != 1: if N % i == 0: print(i) N = N // i else: i += 1 가장 작은 소수인 2부터 시작해서 입력된 숫자를 나눌 수 있을 때까지 나눈 후 다음 소수로 넘어가게 하면 소인수분해의 과정을 표현할 수 있습니다. 입력된 숫자를 나누다가 그 숫자가 1이 되었을 때는 소인수분해가 완료되었다는 의미이므로 while문의 조건을 N != 1로 두어 N == 1일 때 루프가 종료되도록 하였습니다.
자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다. 소수가 하나도 존재하지 않으면 -1을 출력하세요. def is_prime(n): if n == 1: return False else: cnt = 0 for i in range(2, int(n**0.5)+1): if n % i == 0: cnt += 1 break if cnt == 0: return True else: return False M = int(input()..