マシンはわずか3桁を保存することができた場合は、それらの両方として保存されるため、フロート番号12300と12358.9が等しいと見なされます 簡単なチョッピングと0。今のマシンと2つのfloat数値の有効桁数を与え、あなたは彼らがそのマシンで同等に扱われている場合伝えることになっています。
入力仕様:
各入力ファイルは3つの数字が得られる一つのテストケース含ま N、 Aと B、 Nは、(<)有効桁の数であり、 Aおよび Bは、比較される2つの浮動小数点数であるが。各浮動小数点数はより大きくない、非負で 1、その総桁数が100未満であること。
出力仕様:
各テストケースのために、線で印刷 YES
二つの数字が同じに扱われた場合、次いで、標準的な形で数 0.d[1]...d[N]*10^k
(d[1]
> 0数でなければ0)。または NO
彼らは標準的な形式で等しくし、その後2つの数値を処理していない場合。すべての用語は、行の末尾に余分なスペースを、スペースで区切らなければなりません。
注意:単純なチョッピングは丸めずに想定されます。
サンプル入力1:
3 12300 12358.9
サンプル出力1:
YES 0.123*10^5
サンプル入力2:
3 120 128
サンプル出力2:
NO 0.120*10^3 0.128*10^3
其实这道题的难度在于得到这个数的幂次
1の#include <入出力ストリームが> 2の#include < ストリング > 3。 使用して 名前空間STDを、 4 列 A、B; //は二重範囲外10 ^ 100、なお、文字列を使用してアクセスすることができる 。5 INT N; 6 INT dealString (文字列&STR)// データの前処理、データ・ビットの数を返し 7。 { 8。 INT K = str.find(' '); // 小数点を見つける9。IF - (Kが=!1。 ) 10 { 11。 str.erase(K 、1 ); // 小数点削除し 12である IF(STR [ 0 ] == ' 0 ' ) 13である { 14 = K 0 ; 15 str.erase(0、1); // 最初の0削除し 16 } 17 } 18は 他の/ / なし小数 。19 { 20はなく IF(!STR = " 0 " ) 21は K = ; str.length() 22は 他 23であります { 24 K = 0 ; 25 str.erase(0、1); // 最初の0削除し 26である } 27 } 28 ながら(str.empty()&& STR [!0 ==] ' 0 ' ) 29 { 30 str.erase(0、1。); // 出力0先行する 31ことである K--; // 例えば0.128など* 10 ^ = 0.000128 -3 32 } 33れる IF(str.empty())// この数が0であります 34は K = 0 ; 35 一方は(str.length()< N) 36 STR + = " 0 " ; // ビット数が0こすりするだけでは不十分である 37 [ 戻りKを、 38れる } 39 40 のint main()の 41は 、{ 42は >> CIN >> N B; 43である // 取得するために使用されるK1、K2、Bは、ビット 44はある INT K1、K2; 45 K1 = dealString(A) 46は、 K2 = dealString(B); 47 A.assign( a.begin()、a.begin()+ N); //取前N位 48 B.assign(B.begin()、B.begin()+ N)。 49 であれば(==のB && K1 == K2) 50 { 51 COUT << " YES " 。 52 COUT << " 0 " << << " * 10 ^ " << K1 << ENDL。 53 } 54 他の 55 { 56 COUT << " NO " 。 57 裁判所未満<< 「0 」" << K1 << " " ; 58 COUT << " 0 " << B << " * 10 ^ " << K2 << ENDL; 59 } 60 リターン 0 ; 61 }