Skip to content

Commit 73b5157

Browse files
authored
Add files via upload
1 parent 1530f6e commit 73b5157

15 files changed

+944
-0
lines changed

CATALAN_bionomial.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
#include <bits/stdc++.h>
3+
using namespace std;
4+
5+
typedef unsigned long long int ll;
6+
7+
ll bionomialCOEFFICIENT(int n, int k) {
8+
ll res = 1;
9+
if (k > (n-k)) k = n-k;
10+
for (int i = 0; i < k; i++) {
11+
res *= (n-i);
12+
// cout << res << endl;
13+
res /= (i+1);
14+
// cout << res << endl << endl;
15+
}
16+
return res;
17+
}
18+
19+
ll catalan(int n) {
20+
ll c = bionomialCOEFFICIENT(2*n, n);
21+
return c/(n+1);
22+
}
23+
24+
int main() {
25+
for (int i = 0; i <= 51; i++)
26+
cout << (ll) catalan(i) << endl;
27+
}

CATALAN_number.cpp

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// catalan number by DP
2+
3+
#include <cstdio>
4+
#include <iomanip>
5+
#include <cstring>
6+
#include <cmath>
7+
#include <cstdlib>
8+
#include <cctype>
9+
#include <algorithm>
10+
#include <string>
11+
#include <vector>
12+
#include <queue>
13+
#include <map>
14+
#include <set>
15+
#include <sstream>
16+
#include <stack>
17+
#include <list>
18+
#include <iostream>
19+
#include <assert.h>
20+
21+
/**Define memory set function**/
22+
#define mem(x,y) memset(x,y,sizeof(x))
23+
#define CLEAR(x) memset(x,0,sizeof(x))
24+
25+
/**Define function and object**/
26+
#define pb push_back
27+
#define Sort(v) sort(v.begin(),v.end())
28+
#define _sort(s, n) sort(s, s+n)
29+
#define sqr(x) ((x)*(x))
30+
31+
/**Define constant value**/
32+
#define le 5001
33+
#define ERR 1e-9
34+
#define pi (2*acos(0))
35+
#define PI 3.141592653589793
36+
37+
/**Define input**/
38+
#define scanint(a) scanf("%d",&a)
39+
#define scanLLD(a) scanf("%lld",&a)
40+
41+
typedef unsigned long long ll;
42+
43+
using namespace std;
44+
45+
/**********************End*******************/
46+
47+
ll cnt = 0;
48+
49+
ll catalanDP(int n) {
50+
ll catalan[n+1];
51+
catalan[0] = catalan[1] = 1;
52+
for (int i = 2; i <= n; i++) {
53+
catalan[i] = 0;
54+
for (int j = 0; j < i; cnt++, j++)
55+
catalan[i] += catalan[j] * catalan[i-j-1];
56+
}
57+
return catalan[n];
58+
}
59+
60+
int main() {
61+
for (int i = 0; i < 20; i++)
62+
cout << catalanDP(i) << " " << cnt << endl;
63+
}

DequePractice.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
deque <int> dq;
5+
deque <int> d;
6+
7+
inline void show(deque <int> g) {
8+
deque <int> :: iterator it;
9+
for (it = g.begin(); it != g.end(); it++)
10+
cout << *it << " ";
11+
cout << endl;
12+
}
13+
14+
int main() {
15+
dq.push_back(10); show(dq);
16+
dq.push_front(0); show(dq);
17+
dq.push_back(20); show(dq);
18+
dq.push_front(5); show(dq);
19+
20+
cout << dq.size() << endl;
21+
cout << dq.max_size() << endl;
22+
cout << dq.at(2) << endl;
23+
cout << dq.front() << endl;
24+
cout << dq.back() << endl;
25+
26+
dq.pop_front(); show(dq);
27+
dq.pop_back(); show(dq);
28+
29+
cout << endl;
30+
31+
d = {1, 2, 3, 4, 5}; show(d);
32+
deque <int> :: iterator it = d.begin();
33+
++it;
34+
d.insert(it, 10); show(d);
35+
++it; ++it;
36+
d.insert(it, 50); show(d);
37+
}

LCS_.cpp

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
/*************************************
2+
* An Easy LCS LightOJ - 1110 >> DP
3+
* @author Amirul Islam (shiningflash)
4+
************************************/
5+
6+
#include <cstdio>
7+
#include <iomanip>
8+
#include <cstring>
9+
#include <cmath>
10+
#include <cstdlib>
11+
#include <cctype>
12+
#include <algorithm>
13+
#include <string>
14+
#include <vector>
15+
#include <queue>
16+
#include <map>
17+
#include <set>
18+
#include <sstream>
19+
#include <stack>
20+
#include <list>
21+
#include <iostream>
22+
#include <assert.h>
23+
24+
#define mem(x,y) memset(x,y,sizeof(x))
25+
#define CLEAR(x) memset(x,0,sizeof(x))
26+
27+
#define pb push_back
28+
#define Sort(v) sort(v.begin(),v.end())
29+
#define _sort(s, n) sort(s, s+n)
30+
#define sqr(x) ((x)*(x))
31+
32+
#define le 50001
33+
#define ERR 1e-9
34+
#define pi (2*acos(0))
35+
#define PI 3.141592653589793
36+
37+
#define scanint(a) scanf("%d",&a)
38+
#define scanLLD(a) scanf("%lld",&a)
39+
40+
typedef unsigned long long ll;
41+
using namespace std;
42+
43+
/**********************End*******************/
44+
45+
string s1, s2;
46+
int cost[105][105], path[105][105], lcs[105];
47+
int t, l1, l2, lcs_len;
48+
49+
inline void LCS_LENGTH() {
50+
for (int i = 1; i <= l1; cost[i][0] = 0, i++);
51+
for (int j = 1; j <= l2; cost[0][j] = 0, j++);
52+
53+
for (int i = 1; i <= l1; i++) {
54+
for (int j = 1; j <= l2; j++) {
55+
if (s1[i-1] == s2[j-1]) {
56+
cost[i][j] = cost[i-1][j-1] + 1;
57+
path[i][j] = 1;
58+
}
59+
else if (cost[i-1][j] >= cost[i][j-1]) {
60+
cost[i][j] = cost[i-1][j];
61+
path[i][j] = 2;
62+
}
63+
else {
64+
cost[i][j] = cost[i][j-1];
65+
path[i][j] = 3;
66+
}
67+
}
68+
}
69+
lcs_len = cost[l1][l2];
70+
}
71+
72+
inline void LCS() {
73+
int i = l1, j = l2, k = lcs_len-1;
74+
while (k >= 0) {
75+
if (path[i][j] == 1) {
76+
lcs[k] = s1[i-1];
77+
i--; j--; k--;
78+
}
79+
else if (path[i][j] == 2) i--;
80+
else if (path[i][j] == 3) j--;
81+
}
82+
}
83+
84+
inline void LCS_PRINT() {
85+
if (lcs_len <= 0) cout << ":(";
86+
else
87+
for (int i = 0; i < lcs_len; i++)
88+
cout << (char) lcs[i];
89+
cout << endl;
90+
}
91+
92+
int main() {
93+
scanint(t);
94+
for (int i = 1; i <= t; i++) {
95+
cin >> s1 >> s2;
96+
l1 = s1.length(); l2 = s2.length();
97+
LCS_LENGTH();
98+
LCS();
99+
cout << "Case " << i << ": ";
100+
LCS_PRINT();
101+
}
102+
}

UglyNumber.cpp

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/*************************************
2+
* Ugly Numbers > UVa - 136
3+
* solved by - (DP) Dynamic Programming
4+
* @author Amirul Islam (shiningflash)
5+
************************************/
6+
7+
#include <cstdio>
8+
#include <iomanip>
9+
#include <cstring>
10+
#include <cmath>
11+
#include <cstdlib>
12+
#include <cctype>
13+
#include <algorithm>
14+
#include <string>
15+
#include <vector>
16+
#include <queue>
17+
#include <map>
18+
#include <set>
19+
#include <sstream>
20+
#include <stack>
21+
#include <list>
22+
#include <iostream>
23+
#include <assert.h>
24+
25+
/**Define memory set function**/
26+
#define mem(x,y) memset(x,y,sizeof(x))
27+
#define CLEAR(x) memset(x,0,sizeof(x))
28+
29+
/**Define function and object**/
30+
#define pb push_back
31+
#define Sort(v) sort(v.begin(),v.end())
32+
#define _sort(s, n) sort(s, s+n)
33+
#define sqr(x) ((x)*(x))
34+
35+
/**Define constant value**/
36+
#define le 5001
37+
#define ERR 1e-9
38+
#define pi (2*acos(0))
39+
#define PI 3.141592653589793
40+
41+
/**Define input**/
42+
#define scanint(a) scanf("%d",&a)
43+
#define scanLLD(a) scanf("%lld",&a)
44+
45+
typedef unsigned long ll;
46+
47+
using namespace std;
48+
49+
/**********************End*******************/
50+
51+
ll min3(ll a, ll b, ll c) {
52+
return min(min(a, b), c);
53+
}
54+
55+
ll getUGLY(int n) {
56+
ll ugly[n], nxtUGLY = 1;
57+
ll i2 = 0, i3 = 0, i5 = 0;
58+
ll mul2 = 2, mul3 = 3, mul5 = 5;
59+
ugly[0] = 1;
60+
61+
for (ll i = 1; i < n; i++) {
62+
nxtUGLY = min3(mul2, mul3, mul5);
63+
ugly[i] = nxtUGLY;
64+
65+
if (nxtUGLY == mul2) i2++, mul2 = ugly[i2] * 2;
66+
if (nxtUGLY == mul3) i3++, mul3 = ugly[i3] * 3;
67+
if (nxtUGLY == mul5) i5++, mul5 = ugly[i5] * 5;
68+
}
69+
return nxtUGLY;
70+
}
71+
72+
int main() {
73+
cout << "The 1500'th ugly number is " << (ll) getUGLY(1500) << ".\n";
74+
return 0;
75+
}

bionomialCOEFFICIENT.cpp

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*************************************
2+
* UVA - 369 >> bionomial co-efficient
3+
* @author Amirul Islam (shiningflash)
4+
************************************/
5+
6+
#include <cstdio>
7+
#include <iomanip>
8+
#include <cstring>
9+
#include <cmath>
10+
#include <cstdlib>
11+
#include <cctype>
12+
#include <algorithm>
13+
#include <string>
14+
#include <vector>
15+
#include <queue>
16+
#include <map>
17+
#include <set>
18+
#include <sstream>
19+
#include <stack>
20+
#include <list>
21+
#include <iostream>
22+
#include <assert.h>
23+
24+
/**Define memory set function**/
25+
#define mem(x,y) memset(x,y,sizeof(x))
26+
#define CLEAR(x) memset(x,0,sizeof(x))
27+
28+
/**Define function and object**/
29+
#define pb push_back
30+
#define Sort(v) sort(v.begin(),v.end())
31+
#define _sort(s, n) sort(s, s+n)
32+
#define sqr(x) ((x)*(x))
33+
34+
/**Define constant value**/
35+
#define le 5001
36+
#define ERR 1e-9
37+
#define pi (2*acos(0))
38+
#define PI 3.141592653589793
39+
40+
/**Define input**/
41+
#define scanint(a) scanf("%d",&a)
42+
#define scanLLD(a) scanf("%lld",&a)
43+
44+
typedef unsigned long long ll;
45+
46+
using namespace std;
47+
48+
/**********************End*******************/
49+
50+
ll bioCOEFF(int n, int k) {
51+
ll res = 1;
52+
if (k > n-k) k = n-k;
53+
for (int i = 0; i < k; i++) {
54+
res *= (n-i);
55+
res /= (i+1);
56+
}
57+
return res;
58+
}
59+
60+
int main() {
61+
int n, k;
62+
while (scanf("%d %d", &n, &k)) {
63+
if (n == 0 && k == 0) break;
64+
printf("%d things taken %d at a time is %llu exactly.\n", n, k, bioCOEFF(n, k));
65+
}
66+
return 0;
67+
}

0 commit comments

Comments
 (0)