Je me trompe de réponse des deux juges en ligne.Quel est le problème avec ma solution 3n + 1?
#include <stdio.h>
int main(int argc, char * argv[])
{
long long i=0;
long long j=0;
long long p=0;
long long q=0;
long long larger;
long long smaller;
long long cycle_length=1;
long long max_cycle_length=1;
while (scanf("%lld %lld",&p,&q) !=EOF)
{
/*check validity of input*/
if (p <= 0 || p >= 1000000 || q <= 0 || q >= 1000000) continue;
max_cycle_length=1;
if (p > q)
{
larger = p;
smaller = q;
}
else
{
larger = q;
smaller = p;
}
for (i=smaller;i<=larger;i++)
{
cycle_length = 1;
/*printf("i = %lld\r\n",i);*/
j = i;
while (j > 1)
{
/*printf("j = %lld\r\n",j);*/
if ((j % 2) == 0)
{
j = j/2;
}
else
{
j = 3*j + 1;
}
cycle_length++;
}
if (cycle_length > max_cycle_length)
max_cycle_length = cycle_length;
/*printf("cycle_length = %lld\r\n", cycle_length);*/
}
printf("%lld %lld %lld \r\n",p,q,max_cycle_length);
}
return 0;
}
semble correct pour moi. Qu'est-ce qu'il est censé produire? –
cette question a besoin de plus de contexte - je parie que je ne suis pas le seul qui n'a pas la moindre idée de ce dont vous parlez. –
@Daren: FWIW, La Conjecture 3n + 1, ou la "Conjecture Collatz", est ce dont il parle: http://en.wikipedia.org/wiki/Collatz_conjecture et c'est "raisonnablement" bien connu, mais pas tout à fait bien qu'il ne devrait pas être expressément indiqué, je suis d'accord. –