Problem
Chef has an array of length .
An index is called strong if we can change the gcd of the whole array just by changing the value of .
Determine the number of strong indices in the array.
Input Format
- First line will contain , number of test cases. Then the test cases follow.
- First line of each test case contains an integer denoting the size of the array .
- Second line contains space separated integers - denoting the array .
Output Format
For each test case, output the number of strong indices in the array.
Constraints
- Sum of over all test cases do not exceed .
Sample 1:
Input
Output
3 3 5 10 20 4 3 5 7 11 4 2 2 2 2
3 0 4
Explanation:
Test Case : All the indices are strong.
- For index you can change the element to which changes the
gcd
of the array to . - For index you can change the element to which changes the
gcd
of the array to . - For index you can change the element to which changes the
gcd
of the array to .
Test Case : No index is strong. If you change any single element, gcd
still remains the same.
Test Case : All the indices are strong. You can change any element to . This changes the gcd
of the array to
Code(C++):-
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
//code here
int n;
cin>>n;
int gcd= 0;
vector<int> G(n);
for(int i=0;i<n;i++)
{
// int a;
cin>>G[i];
gcd = __gcd(gcd,G[i]);
}
if(gcd!=1) cout<<n<<endl;
else{
vector<int> prefix_gcd(n);
vector<int> suffix_gcd(n);
prefix_gcd[0] = G[0];
suffix_gcd[n-1] = G[n-1];
for(int i = 1; i < n ; i ++ )
{
prefix_gcd[i] = __gcd(G[i],prefix_gcd[i-1]);
}
for(int i = n-2; i >=0; i -- )
{
suffix_gcd[i] = __gcd(G[i],suffix_gcd[i+1]);
}
int count = 0;
for(int i = 0 ; i < n ; i ++ )
{
if(i==0)
{
if(suffix_gcd[1] > 1)
count++;
}
else if(i == n-1)
{
if( prefix_gcd[n-2] > 1)
count++;
}
else if ( __gcd( prefix_gcd[i-1] , suffix_gcd[i+1] ) > 1)
count++;
}
cout<<count<<endl;
}
}
return 0;
}
Code(JAVA):-
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Codechef
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
while(t-->0){
int n=sc.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++)
{
a[i]=sc.nextInt();
}
int left[]=new int[n];
int right[]=new int[n];
left[0]=a[0];
right[n-1]=a[n-1];
for(int i=1;i<n;i++)
{
left[i]=gcd(left[i-1],a[i]);
}
for(int i=n-2;i>=0;i--)
{
right[i]=gcd(right[i+1],a[i]);
}
int count=0;
for(int i=0;i<n;i++)
{
if(i==0 && right[i+1]>1)
{
count++;
}
else if((i==n-1) && (left[i-1]>1))
{
count++;
}
else if(i!=0 && i!=n-1 && gcd(left[i-1],right[i+1])>1)
{
count++;
}
}
System.out.println(count);
}
}
public static int gcd(int a,int b){
if(a==0)
return b;
return gcd(b%a,a);
}
}
Recommended Post :-
HCL Coding Questions:-
Capgemini Coding Questions:-
iMocha coding Questions:-
Tech Mahindra coding questions:-
Unthinkable Solutions coding questions:-
- Swap the adjacent characters of the string
- Double the vowel characters in the string
- Character with their frequency
- Program to find the closest value
Must check this:-
Companies interview:-
- Swap adjacent characters
- Double the vowel characters
- Check valid parenthesis
- Print the characters with their frequencies
- Find closest value
- Word Count
- Program of CaesarCipher
- Program to find the perfect city
- Annual Day | Tech Mahindra coding question
- Find the number of pairs in the array whose sum is equal to a given target.
Full C course:-
Key points:-
- How to set limit in the floating value in python
- What is boolean data type
- How to print any character without using format specifier
- How to check that given number is power of 2 or not
- How to fix limit in double and floating numbers after dot (.) in c++
- How to print a double or floating point number in scientific notation and fixed notation
- How to take input a string in c
- How to reduce the execution time of program in c++.
Cracking the coding interview:-
Array and string:-
Tree and graph:-
Hackerearth Problems:-
- Very Cool numbers | Hacker earth solution
- Vowel Recognition | Hackerearth practice problem solution
- Birthday party | Hacker earth solution
- Most frequent | hacker earth problem solution
- program to find symetric difference of two sets
- cost of balloons | Hacker earth problem solution
- Chacha o chacha | hacker earth problem solution
- jadu and dna | hacker earth solution
- Bricks game | hacker earth problem
- Anti-Palindrome strings | hacker earth solution
- connected components in the graph | hacker earth data structure
- odd one out || hacker earth problem solution
- Minimum addition | Hackerearth Practice problem
- The magical mountain | Hackerearth Practice problem
- The first overtake | Hackerearth Practice problem
Hackerrank Problems:-
- Playing With Characters | Hackerrank practice problem solution
- Sum and Difference of Two Numbers | hackerrank practice problem solution
- Functions in C | hackerrank practice problem solution
- Pointers in C | hackerrank practice problem solution
- Conditional Statements in C | Hackerrank practice problem solution
- For Loop in C | hackerrank practice problem solution
- Sum of Digits of a Five Digit Number | hackerrank practice problem solution
- 1D Arrays in C | hackerrank practice problem solution
- Array Reversal | hackerrank practice problem solution
- Printing Tokens | hackerrank practice problem solution
- Digit Frequency | hackerrank practice problem solution
- Calculate the Nth term | hackerrank practice problem solution
Data structure:-
- Program to find cycle in the graph
- Implementation of singly link list
- Implementation of queue by using link list
- Algorithm of quick sort
- stack by using link list
- program to find preorder post order and inorder of the binary search tree
- Minimum weight of spanning tree
- Preorder, inorder and post order traversal of the tree
MCQs:-
0 Comments