202.快楽数-力ボタン(c++)
1093 ワード
タイトル:
アルゴリズムを作成して、1つの数が「快楽数」であるかどうかを判断します.
「快楽数」は、正の整数に対して、その数を各位置の数値の二乗和に置き換えるたびに、この数が1になるまで繰り返し、無限ループである可能性がありますが、常に1にならないまで繰り返します.1に変えることができれば、この数が快楽数です.
サンプル:
考え方:
水の問題ですが、カラーペンは私のように、実行時もメモリ消費量も高い恐怖があります.まだアップグレードする必要がありますが、考え方自体は簡単です.入力した整数を個別の整数に分割し、問題によって与えられたnをすべての個別の整数の平方和に割り当て、1かどうかを判定します.はい、trueを返します.いいえ、nが最終的に1に等しいまで、または10000回の強制終了サイクルがfalseに戻るまで、分割および付与の二乗を再開し、ループを行います.すなわち、nは非快楽数とみなされます.
マイコード:
class Solution { public: bool isHappy(int n) { int a[10000]; int con=0; if(n==1) { return true; } while(n!=1) { con++; int i=0; while(n!=0) { a[i]=n%10; n=n/10; i++; } for(int j=0;j { n=n+a[j]*a[j]; } if(n==1) { return true; break; } if(con>10000) { break; return false; } } return 0; } };
アルゴリズムを作成して、1つの数が「快楽数」であるかどうかを判断します.
「快楽数」は、正の整数に対して、その数を各位置の数値の二乗和に置き換えるたびに、この数が1になるまで繰り返し、無限ループである可能性がありますが、常に1にならないまで繰り返します.1に変えることができれば、この数が快楽数です.
サンプル:
: 19
: true
:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
考え方:
水の問題ですが、カラーペンは私のように、実行時もメモリ消費量も高い恐怖があります.まだアップグレードする必要がありますが、考え方自体は簡単です.入力した整数を個別の整数に分割し、問題によって与えられたnをすべての個別の整数の平方和に割り当て、1かどうかを判定します.はい、trueを返します.いいえ、nが最終的に1に等しいまで、または10000回の強制終了サイクルがfalseに戻るまで、分割および付与の二乗を再開し、ループを行います.すなわち、nは非快楽数とみなされます.
マイコード:
class Solution { public: bool isHappy(int n) { int a[10000]; int con=0; if(n==1) { return true; } while(n!=1) { con++; int i=0; while(n!=0) { a[i]=n%10; n=n/10; i++; } for(int j=0;j { n=n+a[j]*a[j]; } if(n==1) { return true; break; } if(con>10000) { break; return false; } } return 0; } };