コラスの推測


中に入ると


与えられた数が1になる前に、計算を繰り返してその回数を返す問題.計算自体は簡単ですが、やるべき資料型の問題で、しばらくは難しいです.

コードの説明


while文で、xが1でない場合にのみ繰り返します.しかし,nが626331の場合,常に奇妙な値が現れる.質問を検索すると、626331であれば計算される数字が大きくなり、整数型intは含まれません.
int solution(long num)
パラメータnumのデータ型をintからlongに変更しましたが、今回はランタイムエラーか何かです...
したがってsolution関数では,xをlong資料型として宣言しnum値を単独で加える.

コード#コード#

#include <string>
#include <vector>

using namespace std;

int solution(int num) {
     /*while문으로 값이 1이 될 때까지.
    안에서 1-1과 1-2를 반복하고 count를 더해준다.*/
    
    int answer = 0;
    long x = num;

    while(x != 1) {
        
        if(x % 2 == 0){
            x = x / 2;
        }else{
            x = (x * 3) + 1;
        }
        
        answer++;
        
        if(answer >= 500){
            return -1;
        }
    }

    return answer;

}

疑問点


パラメータintをlongに変えても大丈夫でしょうか?なぜかlongx=num分で開かないと解けない...うん.

P.s


他の人のコードを見てみると、3つの演算子を使うともっと簡潔になることがわかりました.どうして...解を伸ばすことに慣れて、3つの演算子は足を使っても考えにくい.