Are you passionate about coding and competing in programming challenges? Look no further than CS Algo - Competitive Programming Telegram channel! This channel is your one-stop destination for comprehensive programming solutions with outputs that are authentic and reliable. Stay updated with daily job opportunities and get notified about upcoming hackathons along with their solutions. Join a community of like-minded individuals who are dedicated to mastering the art of competitive programming. Don't miss out on this valuable resource to enhance your coding skills and stay ahead in the competitive programming world. Join CS Algo today and take your programming skills to the next level! To connect with us, visit the Main Group at @SuperExams and get job updates from @FresherEarth. Buy ads for promotions at https://telega.io/c/cs_algo
19 Feb, 15:11
19 Feb, 15:10
19 Feb, 15:08
19 Feb, 15:03
19 Feb, 15:00
19 Feb, 14:54
19 Feb, 14:50
19 Feb, 14:50
19 Feb, 14:47
19 Feb, 14:45
19 Feb, 14:45
19 Feb, 14:43
19 Feb, 14:42
19 Feb, 14:42
19 Feb, 14:42
19 Feb, 14:38
19 Feb, 14:36
19 Feb, 14:34
18 Feb, 18:48
17 Feb, 11:24
17 Feb, 11:20
17 Feb, 11:20
17 Feb, 11:13
15 Feb, 16:14
15 Feb, 16:13
15 Feb, 16:12
15 Feb, 16:10
15 Feb, 16:08
15 Feb, 16:06
15 Feb, 16:04
15 Feb, 15:59
15 Feb, 15:59
15 Feb, 15:39
15 Feb, 15:38
15 Feb, 15:37
15 Feb, 15:35
15 Feb, 15:33
15 Feb, 15:31
12 Feb, 16:27
12 Feb, 15:21
12 Feb, 15:19
12 Feb, 15:11
12 Feb, 15:08
12 Feb, 15:06
12 Feb, 15:06
12 Feb, 15:03
12 Feb, 15:01
12 Feb, 14:56
11 Feb, 15:28
11 Feb, 15:26
11 Feb, 15:20
11 Feb, 15:20
11 Feb, 15:19
11 Feb, 15:19
11 Feb, 15:19
11 Feb, 15:18
11 Feb, 15:18
11 Feb, 15:18
08 Feb, 12:57
08 Feb, 12:56
08 Feb, 12:55
08 Feb, 12:55
08 Feb, 12:55
08 Feb, 07:01
07 Feb, 07:49
07 Feb, 07:46
07 Feb, 07:31
07 Feb, 07:31
07 Feb, 07:30
06 Feb, 12:47
06 Feb, 12:46
06 Feb, 12:44
06 Feb, 07:15
06 Feb, 04:14
06 Feb, 04:14
06 Feb, 04:14
06 Feb, 04:12
05 Feb, 17:08
05 Feb, 17:06
05 Feb, 15:03
05 Feb, 15:02
05 Feb, 15:00
05 Feb, 14:58
05 Feb, 13:23
05 Feb, 13:16
05 Feb, 13:15
05 Feb, 13:14
05 Feb, 13:12
31 Jan, 15:13
31 Jan, 12:39
31 Jan, 12:38
31 Jan, 12:37
30 Jan, 06:25
29 Jan, 18:11
29 Jan, 18:10
29 Jan, 18:09
29 Jan, 17:14
29 Jan, 17:13
29 Jan, 17:12
29 Jan, 17:12
29 Jan, 17:06
29 Jan, 13:41
29 Jan, 12:54
29 Jan, 12:53
29 Jan, 12:53
29 Jan, 12:52
29 Jan, 08:13
29 Jan, 04:42
14 Jan, 13:14
14 Jan, 12:10
14 Jan, 12:09
14 Jan, 12:08
14 Jan, 12:04
14 Jan, 12:03
13 Jan, 12:53
13 Jan, 12:53
13 Jan, 11:10
13 Jan, 08:30
13 Jan, 08:13
13 Jan, 08:11
13 Jan, 07:19
13 Jan, 06:58
13 Jan, 06:57
13 Jan, 06:56
13 Jan, 06:55
12 Jan, 18:26
12 Jan, 18:24
12 Jan, 17:45
12 Jan, 11:26
12 Jan, 11:23
12 Jan, 11:22
12 Jan, 11:22
12 Jan, 08:55
12 Jan, 08:55
12 Jan, 08:54
12 Jan, 08:54
10 Jan, 09:50
10 Jan, 09:23
10 Jan, 09:20
10 Jan, 09:16
10 Jan, 08:25
10 Jan, 07:15
10 Jan, 07:07
10 Jan, 07:05
10 Jan, 07:05
10 Jan, 07:04
10 Jan, 07:03
10 Jan, 07:01
09 Jan, 16:23
09 Jan, 16:22
09 Jan, 12:52
09 Jan, 12:07
09 Jan, 12:06
09 Jan, 12:06
09 Jan, 05:24
09 Jan, 04:59
09 Jan, 04:52
08 Jan, 18:55
08 Jan, 18:54
08 Jan, 18:53
08 Jan, 12:28
08 Jan, 12:26
08 Jan, 12:23
08 Jan, 12:22
08 Jan, 12:21
08 Jan, 12:20
08 Jan, 12:19
08 Jan, 12:18
08 Jan, 12:17
08 Jan, 12:16
08 Jan, 10:01
08 Jan, 09:58
01 Jan, 09:35
01 Jan, 09:22
01 Jan, 09:10
01 Jan, 09:09
01 Jan, 09:08
01 Jan, 09:07
01 Jan, 04:55
31 Dec, 15:52
31 Dec, 15:46
31 Dec, 15:30
31 Dec, 15:29
31 Dec, 15:28
31 Dec, 15:25
31 Dec, 15:23
31 Dec, 09:46
31 Dec, 09:44
31 Dec, 09:43
31 Dec, 09:42
31 Dec, 09:40
31 Dec, 07:24
30 Dec, 02:52
30 Dec, 02:49
30 Dec, 02:49
30 Dec, 02:48
29 Dec, 18:12
29 Dec, 17:50
29 Dec, 17:49
29 Dec, 17:49
29 Dec, 06:04
29 Dec, 05:01
29 Dec, 04:57
29 Dec, 04:51
28 Dec, 14:04
28 Dec, 12:42
28 Dec, 12:41
28 Dec, 12:40
28 Dec, 12:37
28 Dec, 12:35
28 Dec, 12:34
28 Dec, 12:31
28 Dec, 09:23
28 Dec, 09:21
28 Dec, 06:09
28 Dec, 06:08
28 Dec, 03:23
28 Dec, 03:19
28 Dec, 03:19
27 Dec, 11:01
27 Dec, 10:59
27 Dec, 09:32
27 Dec, 09:31
27 Dec, 09:30
27 Dec, 08:24
27 Dec, 06:59
27 Dec, 06:58
27 Dec, 06:58
26 Dec, 15:59
26 Dec, 15:57
19 Nov, 09:23
19 Nov, 07:10
19 Nov, 07:04
19 Nov, 06:31
18 Nov, 17:30
18 Nov, 17:29
18 Nov, 17:26
18 Nov, 17:22
18 Nov, 17:03
18 Nov, 17:02
18 Nov, 16:58
18 Nov, 16:55
18 Nov, 06:36
18 Nov, 06:35
18 Nov, 06:33
18 Nov, 06:31
18 Nov, 06:30
17 Nov, 06:08
16 Nov, 16:39
from collections import deque
def timeOfBuffering(arrivalRate, packets):
buffer = deque()
current = 1
time = 0
for i in range(0, len(packets), arrivalRate):
time += 1
for j in range(i, min(i + arrivalRate, len(packets))):
packet = packets[j]
if packet != current:
buffer.append(packet)
if current in buffer:
buffer.remove(current)
elif current == packets[i]:
pass
else:
return time
current += 1
return -1
16 Nov, 16:39
#include <bits/stdc++.h>omega prime
using namespace std;
#define ll long long
const ll M = 1e9+7 ;
int main() {
ll n;cin>>n ;
vector<ll> v(31) ;
for(ll i = 1;i<=n;i++){
ll x;cin>>x ;
v[x]++ ;
}
vector<ll> p ;
for(ll i = 2;i<=30;i++){
bool ch = 1 ;
for(ll j = 2;j*j<=i;j++){
if(i%(j*j)==0)ch = 0 ;
}
if(ch)p.push_back(i) ;
}
ll one = 1 ;
while(v[1]){
one = one*2%M ;
v[1]-- ;
}
n = p.size() ;
ll ans = 0 ;
for(ll i = 1;i<(1ll<<n);i++){
ll pro = 1 ;
ll tot = 1 ;
bool ch = 1 ;
for(ll j =0;j<n;j++){
if((1ll<<j)&i){
if(__gcd(pro,p[j])!=1){
ch = 0 ;
break;
}
pro = pro*p[j] ;
tot = tot*v[p[j]]%M ;
}
}
tot = tot*(one)%M ;
if(ch){
ans += tot ;
ans %= M ;
}
}
cout<<(ans+M)%M<<endl;
return 0;
}
}
02 Nov, 16:34
02 Nov, 16:29
02 Nov, 16:28
02 Nov, 16:27
02 Nov, 16:23
02 Nov, 13:38
def solution(S, K):
n = len(S)
if K == 0:
return compressLength(S)
res = float('inf')
for i in range(n - K + 1):
newS = S[:i] + S[i + K:]
res = min(res, compressLength(newS))
return res
def compressLength(s):
n = len(s)
if n == 0:
return 0
count = 1
length = 0
for i in range(1, n):
if s[i] == s[i - 1]:
count += 1
else:
length += 1 + (len(str(count)) if count > 1 else 0)
count = 1
length += 1 + (len(str(count)) if count > 1 else 0)
return length
02 Nov, 13:36
02 Nov, 13:35
def minimizeeffort(e):
n = len(e)
e.sort()
m = {}
s = 0
for i in range(n):
c = e[i]
min_effort = c
for d in range(1, int(c**0.5) + 1):
if c % d == 0:
if d in m:
min_effort = min(min_effort, m[d])
pd = c // d
if pd in m:
min_effort = min(min_effort, m[pd])
m[c] = min_effort
s += min_effort
return s
02 Nov, 11:29
def arrayMaxima(n,a):
evens, odds = [], []
for x in a:
if x % 2 == 0:
evens.append(x)
else:
odds.append(x)
x = max(evens) - min(evens)
y = max(odds) - min(odds)
return x + y
02 Nov, 11:28
#include <bits/stdc++.h>
using namespace std;
#define ll long long
vector<ll> msk(1024,-1);
void digits(ll num1) {
string str1 = to_string(num1);
set<ll>s;
for (char digit : str1) {
ll d=digit-'0';
s.insert(d);
}
ll val=0;
for(auto it:s) val+=(1<<it);
msk[val]=max(msk[val],num1);
}
ll solution(vector<ll>& A) {
for(auto &it:msk) it=-1;
ll ans=-1;
for(auto it:A) digits(it);
for(ll i=1;i<1024;i++){
if(msk[i]==-1) continue;
for(ll j=i+1;j<1024;j++){
if(msk[j]==-1) continue;
ll fl=0;
for(ll k=0;k<10;k++){
if((1<<k)&i){
if((1<<k)&j){
fl=1;
continue;
}
}
}
if(fl) continue;
ans=max(ans,msk[i]+msk[j]);
}
}
return ans;
}
02 Nov, 11:19
01 Nov, 17:23
01 Nov, 17:02
01 Nov, 17:00
01 Nov, 16:55
01 Nov, 16:53
01 Nov, 16:51
01 Nov, 16:50
01 Nov, 16:48
28 Oct, 10:41
28 Oct, 09:57
27 Oct, 19:13
27 Oct, 19:10
27 Oct, 19:06
27 Oct, 19:05
27 Oct, 19:05
27 Oct, 19:02
27 Oct, 18:59
27 Oct, 18:54
def func(logs,maxSpan):
sigins = {}
signouts = {}
for i in logs:
iid,time,string = i.split()
if string == "sign-out":
signouts[iid] = int(time)
else:
sigins[iid] = int(time)
l = []
for i,j in signouts.items():
if i in sigins:
time = j - sigins[i]
if time <= maxSpan:
l.append(int(i))
l.sort()
res = [str(i) for i in l]
return res
27 Oct, 12:13
27 Oct, 12:10
27 Oct, 12:03
def getMaxEqualIndices(inv1, inv2):
n = len(inv1)
sinv1 = sum(inv1)
sinv2 = sorted(inv2)
prefixSum = [0] * (n + 1)
for i in range(n):
prefixSum[i + 1] = prefixSum[i] + sinv2[i]
left = 0
right = n
while left < right:
mid = (left + right + 1) // 2
if mid < n:
if prefixSum[mid] <= sinv1:
left = mid
else:
right = mid - 1
else:
if prefixSum[mid] == sinv1:
left = mid
else:
right = mid - 1
return left
27 Oct, 12:01
27 Oct, 12:00
int cleanupDataset(string dataset, int x, int y){
vector<int> F(26, 0);
for(char ch : dataset) F[ch - 'a']++;
int ans = 0;
if(x <= y){
int cnt = 0;
for(int num : F) ans += x * (num >> 1) , cnt += num & 1;
ans += y * (cnt >> 1);
}
else{
priority_queue<int> pq;
for(int num : F) if(num) pq.push(num);
while(pq.size() > 1){
int x1 = pq.top(); pq.pop();
int x2 = pq.top(); pq.pop();
int rem = min(x1, x2);
ans += y * rem;
if(max(x1, x2) - rem) pq.push(max(x1 , x2) - rem);
}
if(pq.size()){
int rem = pq.top(); pq.pop();
ans += x * (rem >> 1);
}
}
return ans;
}
27 Oct, 06:44
27 Oct, 06:40
27 Oct, 04:36
#include <bits/stdc++.h>
using namespace std;
string nextBeautifulString(string s, int n, int k) {
for (int i = n - 1; i >= 0; --i) {
if (s[i] < 'a' + k - 1) {
s[i]++;
fill(s.begin() + i + 1, s.end(), 'a');
for (int j = 1; j < n; ++j) {
if (s[j] == s[j - 1] (j > 1 && s[j] == s[j - 2])) {
if (s[j] < 'a' + k - 1) {
s[j]++;
fill(s.begin() + j + 1, s.end(), 'a');
} else {
return "-1";
}
}
}
bool valid = true;
for (int j = 1; j < n; ++j) {
if (s[j] == s[j - 1] (j > 1 && s[j] == s[j - 2])) {
valid = false;
break;
}
}
if (valid) return s;
else return "-1";
}
}
return "-1";
}
int main() {
int t;
cin >> t;
while (t--) {
int n, k;
string s;
cin >> n >> k >> s;
cout << nextBeautifulString(s, n, k) << endl;
}
return 0;
}
26 Oct, 18:46
26 Oct, 07:20
def getInaccurateProcesses(processOrder, executionOrder):
class FenwickTree:
def __init__(self, size):
self.size = size
self.tree = [0] * (size + 2)
def update(self, index, delta=1):
while index <= self.size:
self.tree[index] += delta
index += index & -index
def query(self, index):
res = 0
while index > 0:
res += self.tree[index]
index -= index & -index
return res
def range_query(self, left, right):
if left > right:
return 0
return self.query(right) - self.query(left -1)
n = len(processOrder)
pid = {}
for idx, process in enumerate(processOrder):
pid[process] = idx
ft = FenwickTree(n)
inaccurate =0
for process in executionOrder:
index = pid[process]
fti = index +1
count = ft.query(fti -1)
if count != index:
inaccurate +=1
ft.update(fti)
return inaccurate
26 Oct, 06:35
26 Oct, 06:34
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
const int MOD = 1e9 + 7;
const int MAXN = 1e5 + 5;
int main() {
int N;
cin >> N;
vector<int> squareFreeDivisorCount(N + 1, 0);
long long count = 0;
for (int i = 1; i <= N; ++i) {
for (int j = i; j <= N; j += i) {
int product = i * j;
int root = sqrt(product);
if (root * root == product) {
if (i == j)
count = (count + 1) % MOD;
else
count = (count + 2) % MOD;
}
}
}
cout << count << endl;
return 0;
}
26 Oct, 05:04
26 Oct, 04:56
25 Oct, 21:56
def solution(S):
r={'AB','BA','CD','DC'}
s=[]
for c in S:
if s and s[-1]+c in r:
s.pop()
else:
s.append(c)
return ''.join(s)
25 Oct, 21:54
int best=0;
int dfs(TreeNode* root) {
if(root==NULL)return -1;
int left = dfs(root->left);
int right = dfs(root->right);
int res = root->val;
if(left*right>=0 && left+right>=0) res+=left+right;
best = max(best,res);
return res;
}
int maxPerfectSubtree(TreeNode* root) {
solve(root);
return best;
}
25 Oct, 21:53
import java.util.*;
import java.io.*;
public class Main {
static class Segment {
int L;
int R;
int cost;
Segment(int L, int R, int cost){
this.L = L;
this.R = R;
this.cost = cost;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
sc.nextInt(); // Read the '3' and ignore
Segment[] segments = new Segment[N];
for(int i=0;i<N;i++) {
int L = sc.nextInt();
int R = sc.nextInt();
int cost = sc.nextInt();
segments[i] = new Segment(L, R, cost);
}
Segment[] sortedByL = segments.clone();
Arrays.sort(sortedByL, new Comparator<Segment>() {
public int compare(Segment a, Segment b){
if(a.L != b.L) return Integer.compare(a.L, b.L);
return Integer.compare(a.R, b.R);
}
});
Segment[] sortedByR = segments.clone();
Arrays.sort(sortedByR, new Comparator<Segment>() {
public int compare(Segment a, Segment b){
if(a.R != b.R) return Integer.compare(a.R, b.R);
return Integer.compare(a.L, b.L);
}
});
long minCost = Long.MAX_VALUE;
long minProduct = Long.MAX_VALUE;
int r_ptr = 0;
for(int i=0;i<N;i++) {
Segment current = sortedByL[i];
while(r_ptr < N && sortedByR[r_ptr].R < current.L){
if(sortedByR[r_ptr].cost < minCost){
minCost = sortedByR[r_ptr].cost;
}
r_ptr++;
}
if(minCost != Long.MAX_VALUE){
long product = minCost * (long)current.cost;
if(product < minProduct){
minProduct = product;
}
}
}
if(minProduct != Long.MAX_VALUE){
System.out.println(minProduct);
}
else{
System.out.println(-1);
}
}
}
25 Oct, 21:51
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] arr = new int[N];
for(int i=0;i<N;i++) arr[i] = sc.nextInt();
int k = sc.nextInt();
Arrays.sort(arr);
int left=0, right=N-1, moves=0;
while(left <= right){
if(arr[left] + arr[right] <=k) left++;
right--;
moves++;
}
System.out.println(moves);
}
}
25 Oct, 21:49
#include<iostream>
using namespace std;
int solve(vector<int>ribbons, int k)
{
int low=0, high=*max_element(ribbons.begin(), ribbons.end());
while(low<high)
{
int mid=(low+high+1)>>1;
int cnt=0;
for(int r:ribbons)
cnt+=r/mid;
if(cnt<k)
high=mid-1;
else
low=mid;
}
return low;
}
25 Oct, 21:47
25 Oct, 21:46
25 Oct, 21:44
def ss(firstnum: str, secondnum: str, thirdnum: str) -> bool:
target_sum = int(thirdnum)
second_value = int(secondnum)
if int(firstnum) + second_value == target_sum:
return True
for i in range(len(firstnum)):
new_firstnum = firstnum[:i] + firstnum[i+1:]
if new_firstnum and (new_firstnum[0] != '0'):
if int(new_firstnum) + second_value == target_sum:
return True
return False
25 Oct, 20:43
25 Oct, 19:14
25 Oct, 19:14
25 Oct, 19:10
20 Oct, 18:17
20 Oct, 18:17
20 Oct, 18:14
20 Oct, 18:12
20 Oct, 16:32
20 Oct, 16:28
#include <stdio.h>
#include <limits.h>
struct Classroom {
int n;
int grades[103];
};
void maximum(struct Classroom obj) {
int max_grade = INT_MIN;
for (int i = 0; i < obj.n; i++) {
if (obj.grades[i] > max_grade) {
max_grade = obj.grades[i];
}
}
printf("%d\n", max_grade);
}
void second_maximum(struct Classroom obj) {
int max_grade = INT_MIN, second_max = INT_MIN;
for (int i = 0; i < obj.n; i++) {
if (obj.grades[i] >= max_grade) {
second_max = max_grade;
max_grade = obj.grades[i];
} else if (obj.grades[i] > second_max && obj.grades[i] < max_grade) {
second_max = obj.grades[i];
}
}
if (second_max == INT_MIN) {
printf("%d\n", max_grade);
} else {
printf("%d\n", second_max);
}
}
void Find_Xor(struct Classroom obj) {
int xor_result = 0;
for (int i = 0; i < obj.n; i++) {
xor_result ^= obj.grades[i];
}
printf("%d\n", xor_result);
}
20 Oct, 16:27
#include <stdio.h>
struct CompanyProfile {
char company[11];
int days_in_operation;
};
const char* oldest(struct CompanyProfile profiles[], int n) {
int max_days = -1;
const char* oldest_company = "";
for (int i = 0; i < n; i++) {
if (profiles[i].days_in_operation > max_days) {
max_days = profiles[i].days_in_operation;
oldest_company = profiles[i].company;
}
}
return oldest_company;
}
float average_age(struct CompanyProfile profiles[], int n) {
int total_days = 0;
for (int i = 0; i < n; i++) {
total_days += profiles[i].days_in_operation;
}
return (float)total_days / n;
}
20 Oct, 16:26
#include <bits/stdc++.h>
using namespace std;
int countPowerNumbers(int l, int r) {
vector<long long> pows;
pows.push_back(0);
pows.push_back(1);
for (int p = 2; p < 25; p++) {
long long num = 2;
while ((long long)(pow(num, p) + 0.5) <= r) {
pows.push_back((long long)(pow(num, p) + 0.5));
num++;
}
}
vector<int> ok(r + 1, 0);
for (int i = 0; i < pows.size(); i++) {
for (int j = 0; j < pows.size(); j++) {
if (pows[i] + pows[j] <= r && pows[i] + pows[j] >= l) {
ok[pows[i] + pows[j]] = 1;
}
}
}
for (int i = 0; i <= r; i++) {
ok[i] += ok[i - 1];
}
return ok[r] - ok[l - 1];
}
20 Oct, 11:12
20 Oct, 11:10
20 Oct, 11:08
20 Oct, 11:03
def ss(cipherCode):
digits = list(str(abs(cipherCode)))
digits.sort()
if digits[0] == '0':
for i in range(1, len(digits)):
if digits[i] != '0':
digits[0], digits[i] = digits[i], digits[0]
break
d = int(''.join(digits))
if cipherCode < 0:
d = -d
print(d)
cipherCode = int(input())
ss(cipherCode)
20 Oct, 10:43
def p(packet):
bitmask = 0
for ch in packet:
bitmask |= (1 << (ord(ch) - ord('a')))
return bitmask
def ss(packets):
n = len(packets)
bitmasks = [p(p) for p in packets]
lengths = [len(p) for p in packets]
m = 0
for i in range(n):
for j in range(i + 1, n):
if (bitmasks[i] & bitmasks[j]) == 0:
m = max(m, lengths[i] * lengths[j])
return m
num = int(input())
packets = [input() for _ in range(num)]
result = ss(packets)
print(result)
20 Oct, 07:45
#include <iostream>
#include <unordered_set>
#include <vector>
using namespace std;
vector<bool> solution(int n, vector<vector<int>>queens, vector<vector<int>>queries) {
unordered_set<int> a, b, cs, d;
for (const auto &queen : queens) {
int r = queen[0], c = queen[1];
a.insert(r);
b.insert(c);
cs.insert(r - c);
d.insert(r + c);
}
vector<bool> r;
for (const auto &query : queries) {
int r_q = query[0], c_q = query[1];
bool u = (a.count(r_q) > 0 || b.count(c_q) > 0 || cs.count(r_q - c_q) > 0 || d.count(r_q + c_q) > 0);
r.push_back(u);
}
return r;
}
19 Oct, 19:08
19 Oct, 19:06
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
const long long MOD = 1e9 + 7;
long long basicForm(long long A) {
long long B = 1;
for (long long i = 2; i * i <= A; i++) {
if (A % i == 0) {
B *= i;
while (A % i == 0) {
A /= i;
}
}
}
if (A > 1) {
B *= A;
}
return B;
}
long long countDivisors(long long n) {
long long divisors = 1;
for (long long i = 2; i * i <= n; i++) {
if (n % i == 0) {
int count = 0;
while (n % i == 0) {
n /= i;
count++;
}
divisors *= (count + 1);
}
}
if (n > 1) {
divisors *= 2;
}
return divisors;
}
long long findD(long long A) {
long long B = basicForm(A);
long long C = 1;
for (long long i = 1; i * i <= B; i++) {
if (B % i == 0) {
C = (C * i) % MOD;
if (i != B / i) {
C = (C * (B / i)) % MOD;
}
}
}
long long D = countDivisors(C);
return D;
}
int main() {
long long A;
cin >> A;
cout << findD(A) << endl;
return 0;
}
19 Oct, 19:04
#include <iostream>
#include <vector>
#include <unordered_map>
#include <queue>
#include <climits>
using namespace std;
class Solution {
public:
vector<vector<int>> constructGridLayout(int n, vector<vector<int>>& edges) {
vector<vector<int>> adj(n);
for(int i = 0; i < edges.size(); i++){
adj[edges[i][0]].push_back(edges[i][1]);
adj[edges[i][1]].push_back(edges[i][0]);
}
vector<int> dig(n,0);
for(int i = 0; i < n; i++){
for(auto val : adj[i]) dig[val]++;
}
int root = 0;
for(int i = 0; i < n; i ++){
if(dig[root] > dig[i]) root = i;
}
// cout<<root;
vector<int> vis(n,0);
vis[root] = 1;
vector<int> row1;
int x = adj[root][0];
if(adj[root].size() == 2){
if(dig[x] > dig[adj[root][1]]) x = adj[root][1];
}
row1.push_back(root);
row1.push_back(x);
vis[x] = 1;
while(dig[root] != dig[x]){
int d = 5;
int k = INT_MAX;
for(auto val : adj[x]){
if(vis[val] == 0){
if(dig[val] < d) {
k = val;
d = dig[val];
}
}
}
if(k == INT_MAX) break;
vis[k] = 1;
row1.push_back(k);
x = k;
}
// for(auto val : row1) cout<<val<<" ";
// cout<<endl;
// for(auto val : vis) cout<<val<<" ";
int c = row1.size();
int r = n / c;
vector<vector<int>> ans(r, vector<int>(c,0));
for(int i = 0; i < c; i++) ans[0][i] = row1[i];
for(int i = 1; i < r; i++){
for(int j = 0; j < c; j++){
for(auto val : adj[ans[i-1][j]]){
if(vis[val] == 0){
vis[val] = 1;
ans[i][j] = val;
break;
}
}
}
}
return ans;
}
};