私は "3n + 1"の質問を解決してuva onlinejudgeに提出しようとしていますが、私のコードが間違った答えを出し、残念ながら私はそれを見つけることができませんProblem 100uva onlinejudgeによる3n + 1の間違った答え
マイコード:
#include <stdio.h>
int main()
{
unsigned long int n, m;
int max = 0;
scanf("%d %d", &n, &m);
int i;
for (i = n; i <m + 1; i++)
{
int ter = i;
int counter = 1;
while (ter != 1)
{
counter++;
if (ter % 2 == 1) { ter = 3 * ter + 1; }
else
ter = ter/2;
if (ter == 1)
if (counter>max) { max = counter; }
}
}
printf("%d %d %d\n", n, m, max);
return 0;
}
「3n + 1」?それは[Collatzの推測](https://en.wikipedia.org/wiki/Collatz_conjecture)ではないですか?サンプル入力で正しく機能しますか? –
そして、使用するたびに正しい結果が得られますか?あなたが入力するあらゆる種類の価値について? 1つまたは両方の入力に負の数を入力するようなコーナーケースを試しましたか?ゼロ?非常に大きな数字ですか? 'n 'が' m'より大きかったり、 –
私はあなたの 'counter'をゼロで始めるべきだと思います。 – smac89