Repository navigation
Expand file tree
/
Copy path2.Pascal_triangle.cpp
More file actions
80 lines (68 loc) · 1.9 KB
/
Copy path2.Pascal_triangle.cpp
File metadata and controls
80 lines (68 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
prob-> https://www.codingninjas.com/codestudio/problems/pascal-s-triangle_8230805?challengeSlug=striver-sde-challenge&leftPanelTab=0
//code to find factorial
#include <bits/stdc++.h>
long long fun ncr(int n, int r){
long long ans=1;
for(int i=0;i<r;i++){
ans*=(n-i);
ans/=(i);
}
return ans;
}
//code to print whole pascal triangle
#include <bits/stdc++.h>
vector<vector<long long int>> printPascal(int n)
{
// Write your code here.
vector<vector<long long>>vec;
for(int i = 1 ; i<= n ;i++){
vector<long long>temp;
long long ans = 1 ;
temp.push_back(ans);
for(int j=1;j<i;j++){
ans*=(i-j);
ans/=j;
temp.push_back(ans);
}
vec.push_back(temp);
}
return vec;
}
prob->https://codeforces.com/gym/104386/problem/C
sol->https://codeforces.com/gym/104386/submission/207076661
//code of precomputation of ncr using fermat theorem and then called pascal function
#define ll long long
long long divide = 1e9 + 7;
const ll N = 200001;
vector<ll> inversenum(N + 1); // strore inverse 1 to N;
vector<ll> inversefact(N + 1); // store inverse factorial 1 to N;
vector<ll> fact(N + 1); // store factorial of first N number;
void factorial(ll divide)
{ // n factorial
fact[0] = 1;
for (ll i = 1; i <= N; i++)
{
fact[i] = (fact[i - 1] * i) % divide;
}
}
void inverse(ll divide)
{ // to create inverse of a num
inversenum[0] = inversenum[1] = 1;
for (ll i = 2; i <= N; i++)
{
inversenum[i] = inversenum[divide % i] * (divide - divide / i) % divide;
}
}
void inversefactorial(ll divide)
{ // to create inverse factorial i.e inverse (n-r)! and inverse (r)!
inversefact[0] = inversefact[1] = 1;
for (ll i = 2; i <= N; i++)
{
inversefact[i] = (inversefact[i - 1] * inversenum[i]) % divide;
}
}
ll pascal(ll a, ll b)
{
ll ans = ((fact[a] * inversefact[b]) % divide * inversefact[a - b]) % divide;
return ans;
}