[백준/바킹독] 0327 수학

OOING·2024년 3월 29일
0

백준+알고리즘 공부

목록 보기
74/75

오늘의 문제
6064 카잉 달력
11051 이항 계수 2

6064 카잉 달력

코드

#include <bits/stdc++.h>
using namespace std;

int t, m, n, x, y;

int last(int a, int b) {
	int tmp, ta, tb;
	if (a > b) {
		ta = a; tb = b;
	}
	else {
		ta = b; tb = a;
	}
	while (ta != 0) {
		tmp = tb % ta;
		tb = ta;
		ta = tmp;
	}
	return (a * b) / tb;
}

int main() {
	cin >> t;
	while (t--) {
		cin >> m >> n >> x >> y;
		int mn = last(m, n);
		if (m == x && n == y) {
			cout << mn << "\n";
			continue;
		}
		int ans = -1;
		for (int i = x; i <= mn; i += m) {
			if (i % n == y || (n == y && i % n == 0)) {
				ans = i;
				break;
			}
		}
		cout << ans << "\n";
	}
}

11051 이항 계수 2

코드

#include <bits/stdc++.h>
using namespace std;
#define ll long long

int n, k, dp[1002][1002];

int main() {
	cin >> n >> k;
	dp[1][0] = 1;
	dp[1][1] = 1;
	for (int i = 2; i <= n; i++) {
		for (int j = 0; j <= i; j++) {
			dp[i][j] = (dp[i - 1][j] + dp[i - 1][j - 1]) % 10007;
		}
	}
	cout << dp[n][k];
}

문득.. nCk = n-1Ck + n-1Ck-1 이라는 공식이 떠올랐다..

profile
HICE 19

0개의 댓글