백준 1010 c++
#include <iostream>
#include <vector>
using namespace std;
int input(int lower, int upper);
void input_site(vector <pair<int, int>>& site, int testcase);
void bridge_count(vector <pair<int, int>> site, vector <int>& result);
void print_vector(vector <int> result);
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int T;
vector <pair<int, int>> site;
vector <int> result;
T = input(0, 1000000);
input_site(site, T);
bridge_count(site, result);
print_vector(result);
return 0;
}
int input(int lower, int upper)
{
//cout << "input" << endl;
int A;
while (1)
{
cin >> A;
if (A >= lower && A <= upper)
{
break;
}
else
{
;
}
}
return A;
}
void input_site(vector <pair<int, int>>& site, int testcase)
{
//cout << "input_site" << endl;
int i;
int N, M;
for (i = 0; i < testcase; i++)
{
N = input(1, 29);
M = input(N, 29);
site.push_back(make_pair(N, M));
}
return;
}
void bridge_count(vector <pair<int, int>> site, vector <int> &result)
{
//cout << "bridge_count" << endl;
int size = site.size();
int i, j;
int combi_array[31][31] = { };
combi_array[1][0] = 1;
combi_array[1][1] = 1;
for (i = 2; i <= 30; i++)
{
combi_array[i][0] = 1;
for (j = 1; j <= i; j++)
{
combi_array[i][j] = combi_array[i - 1][j - 1] + combi_array[i - 1][j];
}
}
for (i = 0; i < size; i++)
{
result.push_back(combi_array[site[i].second][site[i].first]);
}
return;
}
void print_vector(vector <int> result)
{
//cout << "print_vector" << endl;
int i;
for (i = 0; i < result.size(); i++)
{
cout << result[i] << "\n";
}
return;
}