RECIPE - Editorial

@kislaya
Why did u write so lengthy code.

U can exploit the fact that GCD cannot be greater than the minimum element of array.

showing runtime error SIGFPE in this problem … please can someone tell my mistake in this code…

https://www.codechef.com/viewsolution/7563648

If someone can help me figuring out what the problem is CodeChef: Practical coding for everyone

what is wrong with my code??
my ans is correct but still it is showing wrong answer

#include <stdio.h>

int main(void) {

int n,i=0,j,min=0,count=0,m,k,gcd;

scanf("%d",&n);

int a[n][49],b[50];

while(i<n)
{
	gcd=0;
	scanf("%d",&m);
	j=0;
	a[i][j]=m;

	scanf("%d",&b[j]);
	min=b[j];
	j++;

		
	while(j<m)
	{
		scanf("%d",&b[j]);
		if(min>b[j])
		min=b[j];
		j++;
	}
	
	while(min>1)
	{
		count=0;
		j=0;
		while(j<m)
		{
			if((b[j]%min)==0)
			count++;
			j++;
		}

		if(count==m)
		{
			gcd=min;
			break;
		}
		min--;
		
	}
	
	j=1;
	k=0;
	if(gcd!=0)
	{
		while(j<=m)
		{
			a[i][j]=b[k]/gcd;
			j++;
			k++;
		}
	}
	else
	{
		while(j<=m)
		{
			a[i][j]=b[k];
			j++;
			k++;
		}
	}
	i++;
	
	count=0;
}

for(i=0;i<n;i++)
{
	for(j=1;j<=a[i][0];j++)
	{
	    if(j==a[i][0])
	    printf("%d",a[i][j]);
	    else
	    printf("%d ",a[i][j]);
	}
	if(i!=(n-1))
	printf("\n");
}


return(0);

}

my code is giving correct answers but in uploadinong your compiler is saying wrong plasee check it or tell me the example which is giving wrong answer
#include <stdio.h>
#include <stdlib.h>
void input(void);
int main()
{
int n,i;
printf(“enter the number the test case\n”);
scanf("%d",&n);
for (i=0;i<n;i++)
{
input();
}

return 0;

}

void input(void)
{
int i,n,b,a[50];
int j=0,count=0 ;
printf(“enter the number of items between 2 to 50 :”);
scanf("%d",&n);
printf(“enter the numbers “);
for(i=0;i<n;i++)
{
scanf(”%d”,&a[i]);
if(i==0)
{
b=a[0];
}
if(i>0)
{
if(b>a[i])
b=a[i];
}
}
for(i=0;i<n;i++)
{
while(1)
{
j++;
if(bj<=a[i])
{
if(b
j==a[i])
break;
}
if(b*j>a[i])
{
for(i=0;i<n;i++)
printf("%d ",a[i]);
count ++;
break;
}
}
if (count==1)
break;

}
         if(count==0)
        {
            for(i=0;i<n;i++)
            printf("%d   ",a[i]/b);
        }

}

my code is giving correct answers but when i am uploading in your compiler its saying wrong answer please check it or tell me the example which is giving wrong answer

https://www.codechef.com/viewsolution/12103516

what wrong with my code???

#include <stdio.h>
#include <stdlib.h>

int minimum(int [],int);

int minimum(int arr[],int N){

    int i=0,min_val=arr[0];
    for(i=1;i<N-1;i++){
        if(min_val > arr[i])
            min_val=arr[i];
    }
        return min_val;

}

int main()
{
int T;

scanf("%d",&T);

while(T){
    int N,flag;
    scanf("%d",&N);
    if(N>=2 && N<=50){
    int arr[N],min,tem=N;
    int i=0;
    while(tem){
        scanf("%d",&arr[i]);
        tem--;  i++;
    }

    min=minimum(arr,N);
           tem=N;
    while(tem){
        if(((arr[tem-1])%min)==0) flag=1;
        else {flag=0; break;}
    tem--;
    }
    i=0;
    if(flag==1){
        while(N){
            printf("%d ",arr[i]/min);
         i++;N--;}
    }
    else{
            while(N){
                printf("%d ",arr[i]);
                i++; N--; }
    } }

T–;

printf("\n");

}
return 0;
}

@alphazeta0

Your code fails for this test case-

Input-
    1
    3 15 35 55

Output-

15 35 55 

Expected Output-

3 7 11

Add a check that if minimum element isn’t gcd, check if any factor of it is GCD of all. (Eg, here 15 isn’t GCD, but its factor 5 is GCD of all elements).

2 Likes

what’s wrong with my code?it’s running correctly on my compiler but giving prompt of wrong answer here.plz check .
https://www.codechef.com/viewsolution/13565846

Hi, can someone please help me find the test case where my code fails for this problem?
Here is my answer :
https://www.codechef.com/viewsolution/15469463

My code is running correctly but don’t know why it’s showing wrong answer. Anyone please help?
https://www.codechef.com/viewsolution/15887411

Can someone tell me whats wrong in my code…!!!


code here

import java.util.Scanner;

public class RECIPE_2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		while(T>0){
			int ingredients = sc.nextInt();
			if(ingredients == 0) return;
			if(ingredients == 1){
				System.out.println(sc.next());
				return;
			}
			int[]arr = new int[ingredients];
			for(int i=0;i<ingredients;i++){
				arr[i] = sc.nextInt();
			}
			//answer
			int result = gcd(arr[0], arr[1]);
			for(int i=2;i<ingredients;i++){
				result = gcd(arr[i], result);
			}
			printArray(arr, result);
			
			T--;
		}

	}
	
	public static int gcd(int a, int b){
		if(a==0){
			return b;
		}else{
			return gcd(b%a, a);
		}
	}
	
	public static void printArray(int[] arr, int divNo){
		for(int i=0;i<arr.length; i++){
			System.out.print(arr[i]/divNo);
			if(i!=arr.length-1)
			System.out.print(" ");
		}
	}

}

I solved this code in another way but still it is failing. anyone what is the case when it got failed.?

Why i am getting WA(wrong answer) ??

I am getting right answers for all the TEST cases, incuding (8,16,20) ans=(2,4,5).Given in comment.
Can anyone help me.

My solution link
https://www.codechef.com/viewsolution/16701304

@grayhathacker

#include<stdio.h>
int main()
{
int t,n,i,j,k,m,a[1000],s[1000],gcd;
scanf("%d",&t);
if(t<=100)
{
for(i=1;i<=t;i++)
{
scanf("%d",&n);
if(n>=2&&n<=50)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[j]);
}
}
gcd=a[0];
for(k=1;k<n;k++)
{
if(a[k]%gcd==0)
{
k++;
}
else{
gcd=a[k]%gcd;
}
}
for(m=0;m<n;m++)
{
s[m]=a[m]/gcd;
printf("%d \n",s[m]);
}

}

}
return 0;
}

please tell me what is wrong with my code it’s working on my system but when I submit it show me wrong answer

#include<stdio.h>
int main()
{
int t,n,i,j,k,m,a[1000],s[1000],gcd;
scanf("%d",&t);
if(t<=100)
{
for(i=1;i<=t;i++)
{
scanf("%d",&n);
if(n>=2&&n<=50)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[j]);
}
}
gcd=a[0];
for(k=1;k<n;k++)
{
if(a[k]%gcd==0)
{
k++;
}
else{
gcd=a[k]%gcd;
}
}
for(m=0;m<n;m++)
{
s[m]=a[m]/gcd;
printf("%d \n",s[m]);
}

}

}
return 0;
}

please tell me what is wrong with my code it’s working on my system but when I submit it show me wrong answer

#include
using namespace std;
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
int q,c=0;
cin>>q;
int a[q];
for(int i=0;i<q;i++)
{
cin>>a[i];
}
int m=a[i];
for(int i=0;i<q;i++)
{
if(a[i]<m)
{
m=a[i];
}
}for(int j=m;j>0;j–)
{c=0;
for(int i=0;i<q;i++)
{
if(a[i]%j==0)
{
c++;
}
if(c==q)
{ for(int i=0;i<q;i++)
cout<<a[i]/j<<" ";
}

}
if(c==q){
    cout<<endl;
    break;
}
}

}
}
what is wrong in this my compiler is giving right answer?

step 1: just find highest common factor(HCF) of all the nos

for ex:In the given question for
case 1: no(s) are :4 ,4 => hcf = 4
case 2: 2,3,4 => hcf will be 1
case 3: 3 15 9 6 => hcf will be 3

step 2:
divide each no of each case with hcf

for ex:
case 1: 4,4 => hcf=4 therefore new nos will be 1,1
case 2: 2,3,4 => hcf=1 therefore new nos will be 2,3,4
case 3: 3,15,9,6 => hcf=3 therefore new nos will be 1,5,3,2

you can see code of this question for given link:
https://www.codechef.com/viewsolution/23428055

it’s not necessary that the no. with minimum value will always be gcd of all…

try this : 8 16 20

ur output: 8 16 20

correct answer : 2 4 5

2 Likes

thank you!

Can you help me with this!
I am getting
Output as 1 1 11 for your test case

#include <bits/stdc++.h>
using namespace std;

long int gcd (long int a, long int b)
{
    if (a == 0)
    return b;
    gcd(b%a, a);
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int t;
    cin >> t;
    long int num;
    while (t--)
    {
      cin >> num;
      long int q[num];
      long int sum =0;
      for(int i=0; i<num; i++){
      cin >> q[i];
      sum = sum+ q[i];
      }
      for(int i=0; i<num; i++){
      cout<<q[i]/gcd(q[i],sum)<<" ";
      
      }
      cout << "\n";
      
      
      
    }
    return 0;
}