본문 바로가기

Math8

[BOJ] 10540번: KLOPKA https://www.acmicpc.net/problem/10540 모기를 잡기 위해 필요한 정사각형 박스의 최소 넓이를 구하는 문제다. 그래서 모든 x, y를 돌면서 max_x - min_x와 max_y - min_y 중 더 큰 수의 제곱이 답이 된다. #include #include using namespace std; int main() { int n, MaxX = -987654321, MaxY = -987654321, MinX = 987654321, MinY = 987654321; scanf("%d", &n); for (int i = 0, a, b; i < n; ++i) { scanf("%d %d", &a, &b); MaxX = max(MaxX, a); MinX = min(MinX, a); Max.. 2018. 7. 27.
[BOJ] 3029번: 경고 https://www.acmicpc.net/problem/3029 입력받은 시간을 모두 초로 바꾼 후, 터질 시간이 현재 시간보다 작을 경우 다음 날이라는 말이므로 24시간을 초로 바꾼 86400초 - 현재 시간 + 터질 시간이 기다려야 하는 시간이다. #include int main() { int ct[3], tt[3]; scanf("%2d:%2d:%2d\n%2d:%2d:%2d", &ct[0], &ct[1], &ct[2], &tt[0], &tt[1], &tt[2]); int cts = ct[0] * 3600 + ct[1] * 60 + ct[2]; int tts = tt[0] * 3600 + tt[1] * 60 + tt[2]; int ans = (cts < tts) ? tts - cts : 86400 -.. 2018. 7. 27.
[BOJ] 10539번: 수빈이와 수열 https://www.acmicpc.net/problem/10539 역연산을 해서 구했다. (sum + (input V)) / i = x -> input V = x * i - sum #include int main() { int n, sum = 0; scanf("%d", &n); for (int i = 1, a; i 2018. 7. 26.
[BOJ] 3053번: 택시 기하학 3053번: 택시 기하학 유클리드 기하학에서 원의 넓이: 택시 기하학에서 원은 정사각형 꼴이다. 그래서 한 변의 길이는 이고 따라서 넓이는 코드 #include #define _USE_MATH_DEFINES #include int main() { double R; scanf("%lf", &R); printf("%.6lf\n%.6lf", R * R * M_PI, R * R * 2.0); return 0; } 2018. 7. 19.
[BOJ] 3046번: R2 3046번: R2 R1과 평균 S가 주어지기 때문에 R2는 다음과 같이 구할 수 있다. 코드 #include int main() { int R1, S; scanf("%d %d", &R1, &S); printf("%d\n", 2 * S - R1); return 0; } 2018. 7. 19.
[BOJ] 3049번: 다각형의 대각선 3049번: 다각형의 대각선 대각선 교차점 하나가 생기려면 대각선 두 개가 필요하고 대각선은 꼭지점 2개로 이뤄지기 때문에 총 4개의 꼭지점의 조합이 필요하다. 즉, n개의 꼭지점 개수 중에서 4개를 순서 없이 선택하면 된다. 그래서 를 계산하면 된다. 코드 #include int main() { int n; scanf("%d", &n); printf("%d", (n * (n - 1) * (n - 2) * (n - 3)) / 24); return 0; } 2018. 7. 19.
[BOJ] 2355번: 시그마 2355번: 시그마 풀이 a≤ba \le ba≤b일 때… ∑i=abi=(b−a+1)(a+b)2\sum_{i=a}^b i = \frac{(b - a + 1)(a + b)}{2}i=a∑b​i=2(b−a+1)(a+b)​ 입력으로 int 범위 a, b가 주어지지만 분자 계산 부분에서 int 범위를 벗어나기 때문에 그것만 잘 신경 써주면 된다. 코드 #include long long swap(long long &a, long long &b) { a = a ^ b; b = a ^ b; a = a ^ b; } int main() { long long a, b; scanf("%lld %lld", &a, &b); if (a > b) swap(a, b); printf("%lld\n", (b - a + 1) * (a + b.. 2018. 5. 26.
[BOJ] 13241번: 최소공배수 13241번: 최소공배수풀이gcd와 lcm을 알고 있으면 되는 문제다. 최소공배수는 주어진 정수 a, b에서 lcm(a, b) = a * b / gcd(a, b)이다.최대공약수는 유클리드 호제법을 사용하면 된다. 정수 m, n(m > n)이 주어질 때 gcd(m, n)은1234long long int gcd(long long int a, long long int b){ return b ? gcd(b, a % b) : a;} 다음과 같이 구현할 수 있다. 자세한 내용과 증명 과정은 링크를 참고하면 된다. 코드123456789101112131415161718192021#include long long int gcd(long long int a, long long int b){ return b ? gcd(b,.. 2018. 4. 1.