コラスの推測
中に入ると
与えられた数が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つの演算子は足を使っても考えにくい.
Reference
この問題について(コラスの推測), 我々は、より多くの情報をここで見つけました https://velog.io/@jy1999/콜라스-추측テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol