Kビット数N
(K≤2000、N≤1020)
の目的を達成するために、コードの各数の和と同じで最も近い一致と多数Nを見つける、N有します。
例えば:本デジタル0050 0104要求、112必要121の数、
考えアルゴリズム解析アルゴリズム
直接暴力、図形を求めることは、順序が大きすぎる数字、デジタルKビット、直接使用することができない整数であることができません、またはフロートは、ストレージアレイを使用して表現しました。この図は、ステップ1、最初から始まる数字の最小数は、1の目の前でそれを表示するために、1の分解を最後の桁を打破する、分析されるべきです。9および特別0、そう左から右にスキャンを開始は、0が発生しましスキップ、それはこの数-1を入れて、最初の非ゼロの数に遭遇した後、最終的には表面に移動し、その後、ステップ2、最初は非数値9を探し始めたあなたは9が発生した場合、図9は、1に、非9に遭遇し、最終的な表面に操作の終止符を打ちます。
以下のような例:
1999000 - > 1990008-> 2000899
この状況が数字1つのアップの冒頭で、999000であれば、結果は1000899であることを問題に注意を払うために
いくつかの手に負えないデータ:29399 - > 29489
以下は、に従事する簡素化するのに最適なスペースであるべきコードが、怠惰です
DATA A のTYPE I. " K≤2000 DATA:CNT TYPE。I " 無制限の累積カウンタ データ(STR 。5)TYPE 。C " INPUT DATA N- TYPEの値P ' 29 399 ' LENGTH 。5。 " N≤1020 DATA K のTYPE I VALUEの。5。 " K≤2000 " の出力 データ X TYPE私。 「K≤2000 STR = 。N のCALL FUNCTION ' CONVERSION_EXIT_ALPHA_INPUT ' EXPORTINGの入力= STR IMPORTING出力= STR。 DATA:オフTYPE I、設定TYPE I。 DATA:BEGIN OF wa_number、 インデックス TYPE I、 数TYPE I、 END OF wa_number。 データ it_number LIKE TABLE OFwa_number。 DOのk 回。 CNT = SY- インデックス。 オフ = SY-指数- 1 。 wa_number -index = SY- インデックス。 wa_number個= STR +オフ(1 )。 APPEND wa_number TO it_number。 CLEAR wa_number。 ENDDO 。 SORT it_number BY インデックスDESCENDING。 cl_demo_output => ディスプレイ(it_number)。 DOのk 回。 READ TABLEを it_number INTO DATA(wa_tmp)INDEX SY- インデックス。 IF wa_tmp番号EQ 0 。 ELSE 。 IF SY-インデックスEQ 1 。 wa_tmp個= wa_tmp-数- 1 。 MODIFY it_numberをFROM wa_tmpのINDEX SY- インデックス。 他に。 CNT + = 1 。 wa_tmp -index = CNT。 wa_tmp個= wa_tmp-数- 1 。 MODIFY it_numberをFROM wa_tmpのINDEX SY- インデックス。 ENDIF。 DATA(IDX)= SY-指数+ 1 。 PERFORM do_add 使用したIDXを。 終了。 ENDIF 。 ENDDO 。 * CLEAR STR .. SORT it_number BY インデックス。 LOOP AT it_number INTO wa_number .. STR = strの&& wa_number- 数。 ENDLOOP 。 cl_demo_output => ディスプレイ(STR)。 FORMは do_add 使用したIDXを。 SORT it_number BY インデックスDESCENDING。 READ TABLE it_number INTO DATA (wa_tmp2)INDEX idxのを。 IF SY-SUBRCのEQ 0 。 IF wa_tmp2番号EQ 9 。 CNT = CNT + 1 。 DELETE it_number INDEX idxのを。 wa_tmp2 -index = CNT。 APPEND wa_tmp2をTO it_number。 DATA(IDX2)= IDX + 1 。 PERFORM do_add 使用したIDX2を。 ELSE 。 wa_tmp2個+ = 1。 MODIFY it_numberをFROM wa_tmp2のINDEX idxの。 ENDIF 。 ELSE 。 wa_tmp -index = 0 。 wa_tmp個= 1 。 APPEND wa_tmp2をTO it_number。 ENDIF 。 ENDFORM。