chaesoo
so0ob
chaesoo
전체 방문자
오늘
어제
  • 분류 전체보기 (169)
    • 알고리즘 (157)
      • 백준 다시풀기 (8)
      • solved.ac (137)
      • 백준 알고리즘 공부 (12)
    • 활동일지 (5)
    • 개발 (5)
      • Unity (4)
    • 책 공부 (2)
      • clean code (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 소마13기
  • 분할정복거듭제곱
  • 플로이드-와샬
  • 문자열
  • 클린코드2장
  • 구현
  • dfs
  • SW마에스트로 13기
  • 게임개발
  • 자료구조
  • 알고리즘
  • 다시풀기
  • 백준미세먼지안녕!
  • 디스코드 봇 파이썬
  • BFS
  • 클린코드
  • 백준
  • DP
  • 분할정복
  • 백준2448
  • 디코 봇
  • 로아 디코봇
  • solved.ac
  • 다익스트라
  • 정보처리기사 2021 합격률
  • 최단거리알고리즘
  • 디코봇 파이썬
  • C++
  • 로스트아크 디코 봇
  • 유니티

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
chaesoo

so0ob

알고리즘/solved.ac

[class4] (백준 2407) 조합

2021. 12. 11. 16:57

문제

nCm을 출력한다.

입력

n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n)

출력

nCm을 출력한다.

제한

예제 입력 1

100 6

예제 출력 1

1192052400

힌트

알고리즘 분류

  • 수학
  • 다이나믹 프로그래밍
  • 조합론
  • 임의 정밀도 / 큰 수 연산
#include <iostream> 
#include <algorithm>
using namespace std;
string arr[200][200];

string addNum(string str1, string str2)
{
	if (str1.length() > str2.length())
	{
		string temp = str2;
		str2 = str1;
		str1 = temp;
	}

	string temp = "";
	int len1 = str1.length();
	int len2 = str2.length();
	int templen = len2 - len1;

	int place = 0;
	for (int i = len1 - 1; i >= 0; i-- )
	{
		int sum = str1[i] - '0' + str2[i + templen] - '0' + place;
		temp.push_back(sum % 10 + '0');
		place = sum / 10;
	}

	for (int i = templen - 1; i >= 0; i--)
	{
		int sum = str2[i] - '0' + place;
		temp.push_back(sum % 10 + '0');
		place = sum / 10;
	}

	if (place > 0)
	{
		temp.push_back(place + '0');
	}

	reverse(temp.begin(), temp.end());
	return temp;
}

string GetResult(int n, int m)
{
	if (n == m || m == 0)
	{
		arr[n][m] = "1";
		return "1";
	}

	if (arr[n][m] != "")
	{
		return arr[n][m];
	}
	else
	{
		arr[n - 1][m - 1] = GetResult(n - 1, m - 1);
		arr[n - 1][m] = GetResult(n - 1, m);
		return addNum(arr[n - 1][m - 1], arr[n - 1][m]);
	}
}

int main() 
{ 
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int N, M;
	cin >> N >> M;
	cout << GetResult(N, M);
	return 0;
}
728x90
반응형

'알고리즘 > solved.ac' 카테고리의 다른 글

[class4] (백준 15652) N과 M (4)  (0) 2021.12.14
[class4] (백준 15650) N과 M (2)  (0) 2021.12.12
[class3] (백준 16236) 아기 상어  (0) 2021.12.10
[class3] (백준 14500) 테트로미노  (0) 2021.12.09
[class3] (백준 9019) DSLR  (0) 2021.12.08
    '알고리즘/solved.ac' 카테고리의 다른 글
    • [class4] (백준 15652) N과 M (4)
    • [class4] (백준 15650) N과 M (2)
    • [class3] (백준 16236) 아기 상어
    • [class3] (백준 14500) 테트로미노
    chaesoo
    chaesoo

    티스토리툴바