Folgendes ist my solution zu a problem on codechef.
Ich bekomme die richtige Ausgabe auf meinem Computer, aber nicht auf Codechef.
Ich konnte den Fehler in meinem Code nicht finden.Schneiden Rezepte Übung auf CodeChef
Das Problem besteht darin, ein Array durch den GCD seiner Elemente zu teilen und es zu drucken.
Ich schrieb den folgenden Code:
#include<stdio.h>
int main(void)
{
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
int a[n],i,divisor,curr,r;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
divisor = a[0];
for(i=1;i<n;i++)
{
curr = a[i];
if(curr<divisor)
{
divisor = curr;
}
}
for(i=0;i<n;i++)
{
r = a[i]%divisor;
if(r != 0){
divisor = 1;
break;
}
}
for(i=0;i<n-1;i++)
{
printf("%d ",a[i]/divisor);
}
printf("%d\n",a[n-1]/divisor);
}
return 0;
}
t
ist die Anzahl der Testfälle.n
ist die Länge des Arrays.a[n]
ist das Array.divisor
ist der GCD aller Elemente im Array.curr
ist die aktuelle Nummer getestet.r
ist der Rest.
Beispieleingabe
3
2 4 4
3 2 3 4
4 3 15 9 6
Beispielausgabe
1 1
2 3 4
1 5 3 2
Erstellen Sie eine separate Funktion, um GCDs zu berechnen und zu verwenden. Geben Sie Ihren Variablen tatsächliche Namen. Mit diesen zwei Schritten hat Ihr Fehler eine viel größere Chance, offensichtlich oder gelöst zu sein. – Ryan
Sie wurden durch die Beispieleingabe in die Irre geführt, der GCD ist nicht nur das kleinste Element im Array. Ein besseres Beispiel wäre dieses Array mit vier Elementen: {6,9,21,15}. Die erwartete Ausgabe ist: {2,3,7,5}. – user3386109
Bitte geben Sie Ihrer Frage einen besseren Titel. "Was ist mit diesem Code falsch?" beschreibt im Grunde alles auf dieser Seite. Ein anderer Benutzer mit demselben Problem kann diese Frage nicht finden. –