Skip to content

Commit 378ee17

Browse files
authored
Merge pull request #4 from Chayandas07/Chayandas07-patch-4
Create 29 November Count the Number of Full Binary Trees
2 parents 630398f + 535ee62 commit 378ee17

File tree

1 file changed

+137
-0
lines changed

1 file changed

+137
-0
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
class Solution{
2+
public:
3+
long long int numoffbt(long long int arr[], int n){
4+
5+
6+
7+
const long long int MOD = 1000000007;
8+
9+
10+
11+
long long int mn = INT_MAX, mx = INT_MIN;
12+
13+
14+
15+
for(int i = 0; i < n; i++){
16+
17+
18+
19+
mn = (mn > arr[i]) ? arr[i] : mn;
20+
21+
22+
23+
mx = (mx < arr[i]) ? arr[i] : mx;
24+
25+
26+
27+
}
28+
29+
30+
31+
32+
33+
34+
35+
long long int ans = 0;
36+
37+
38+
39+
int pd;
40+
41+
42+
43+
vector<bool> vis(mx+1, false);
44+
45+
46+
47+
vector<long long int> sol(mx+1, 0);
48+
49+
50+
51+
for(int i = 0; i < n; i++){
52+
53+
54+
55+
vis[arr[i]] = 1;
56+
57+
58+
59+
sol[arr[i]] = 1;
60+
61+
62+
63+
}
64+
65+
66+
67+
for(int i = mn; i <= mx; i++){
68+
69+
70+
71+
if(!vis[i]){
72+
73+
74+
75+
continue;
76+
77+
78+
79+
}
80+
81+
82+
83+
for(int j = 2; i*j <= mx && j <= i; j++){
84+
85+
86+
87+
pd = i*j;
88+
89+
90+
91+
if(!vis[pd]){
92+
93+
94+
95+
continue;
96+
97+
98+
99+
}
100+
101+
102+
103+
sol[pd] = (sol[pd] + (sol[i]*sol[j])%MOD)%MOD;
104+
105+
106+
107+
if(i != j){
108+
109+
110+
111+
sol[pd] = ( sol[pd] + (sol[i]*sol[j])%MOD)%MOD;
112+
113+
114+
115+
}
116+
117+
118+
119+
}
120+
121+
122+
123+
ans = (ans + sol[i])%MOD;
124+
125+
126+
127+
}
128+
129+
130+
131+
return ans;
132+
133+
134+
135+
}
136+
137+
};

0 commit comments

Comments
 (0)