説明
180度で個別に各桁を回転させた後、我々は各桁が回転しなければならないX.異なる有効な番号を取得する場合、Xはかなりの数である - 私たちは一人でそれを残すことを選択することはできません。
各桁は、回転後の桁のままである場合の数は有効です。0,1、および8は、自身に回転します。図2および5は、互いに回転します。6と9は互いに回転し、数字の残りは他のどの番号に回転し、無効になりません。
今、正の数与えられ N
、どのように多くの数値Xから 1
には N
良いですか?
例: 入力:10 出力:4 説明: 2、5、6、9:範囲[1,10]の4つの良い数字があり 、それらは、回転後変わらないので、1及び10は、良好な数値ではないことを注意。
注意:
- Nは範囲内であろう
[1, 10000]
。
溶液
クラスソリューション{ 公共 のint rotatedDigits(int型のN){ int型のカウント= 0 ; 以下のために(int型、N = iは<; I = 2 iが++ ){ 場合(裁判官は、(i)){ カウント ++ 。 } } リターン回数、 } パブリックブールジャッジ(int型のN){ ブールB = 真。 int型のres = N; int型 DIG = 0 ; int型 NewNum = 0 ; int型 T = 1 。 もし(N <= 10 ){ 行う{ あなた = resを10%に。 RES =のRES / 10 。 IF(== 1 == 0 || ||あなた次第あなたは== == 3 || == 7 == 8アップ|| ||最大4まで) を返す 偽。 } 一方( RES > 0 )。 返す 真; } エルス{ 行う{ あなた = resを10%に。 RES = resを/ 10; IF(アップ== == 3 || 4あなた||あなたは== 7 ){ 返す 偽。 } そうで あれば(== 2アップ{) あなた = 5 。 } そうで あれば(== 5アップ{) あなた = 2 。 } そうで あれば(== 6アップ{) あなた = 9 。 } そうで あれば(== 9アップ{) あなた = 6 。 } NewNum = NewNum +掘る*のT。 T = T * 10 。 } 一方( RES > 0 )。 もし(!NewNum = N){ 返す 真。 } 他{ 戻り 偽。 } } } }