番号123456789はない複製と、1~9から正確番号からなる9桁の番号であることに注意してください。唯一異なる順列で、1から9までの数字を正確に成る別の9桁の数字であることを起こる私たちは246913578を取得するダブルそれ、。我々は再びそれを倍増場合、結果を確認するためにチェックしてください!
今、あなたは、このプロパティを使用してより多くの番号があるかどうかを確認すると仮定されています。それはで与えられた数を2倍、ある k個の数字、あなたは結果の数が元の数の桁だけ順列で構成されている場合は教えています。
入力仕様:
各入力には、一つのテストケースが含まれています。各ケースは、せいぜい20桁一つの正の整数を含んでいます。
出力仕様:
各テストケースのために、入力数を2倍になら行の「Yes」の最初の印刷は、元の数の桁だけ順列から成る番号を与え、または「いいえ」なりません。その後、次の行に、二重番号を印刷します。
サンプル入力:
1234567899
サンプル出力:
Yes 2469135798
文字を達成するために多数、足し算と引き算の操作
1つの#include <iostreamの> 2の#include <アルゴリズム> 3。の#include < ストリング > 4。 使用した 名前空間STD; 5 // オーバーフロー、単純な加算と減算を使用することができない 。6 INT メイン() 。7 { 8 文字列 A、B = "" 、RES; 9 CIN >> A; 10 INT K = 0 ; 11 用(INT I = a.length() - 1 ; I> = 0 ; - I) 12は 、{ 13であります K = K +([I] - ' 0 ')+([I] - ' 0 ' )。 14 B + = k個の%10 + ' 0 ' 。 15 K / = 10 。 16 } 17 であれば(K> 0 ) 18 B + = K + ' 0 ' 。 19 res.assign(b.rbegin()、b.rend())。 20 ソート(a.begin()、a.end())。 21 ソート(b.begin()、b.end())。 22 であれば(==のB) 23 裁判所未満<< " はい" << てendl; 24 他の 25 coutの<< " ノー" << てendl; 26 のための(自動C:RES) 27 COUT << C。 28 coutの<< てendl; 29 リターン 0 ; 30 }