OCAC最初の夏の大会のタイトルE便利な数学的な説明

便利な数学的な
オリジナルタイトルリンクします。http://codeforces.com/problemset/problem/339/A
が、元のタイトルに基づいて入力を処理するために、学生の能力を強化するためにいくつかの強化を行いました。
説明[タイトル]
コングコングは、第三年生アリス魔法学校です。彼は今、追加を学んでいます。
合計のセットを書き込むための教師。コングコングは、この一連の動作の結果を計算する必要があります。
教師の問題は、整数の複数を含む付加(1と1000の間の整数のデータ範囲)、及び2つの正の数の間の文字「+」です。
しかし、式の大きな要素の存在よりも前の要素の後にあれば、コングコングは忘れません。
二つの隣接する要素の各々が加算動作状態にある場合にのみ、「要素の後に前の要素より大きくない」場合は、式を追加コングコングは、解決することができます。
;例えば、 "1 + 2 + 3 + 4 + 5"、 "2 + 2 + 3" Congcongを算出することができる
ので、この式2及び3相に、しかし、不可能でコングコングを計算するために"3 + 2 + 5" 2 Oとの前の3が、3は2よりも大きいです。
今、先生がダウン加算式を配置しており、この問題を計算コングコングを有効にするために、この式は、コングコング計算できるように、元素の添加の順序を入れ替える助けとしてください。
[入力形式の
入力ラインが空でない文字列s(長さsはない1,000以下である)を含む、それを計算し、添加剤処方コングコングのために必要とされます。
文字列sにスペースはありません。これは、整数のみの複数(1から1000の間の範囲内の各整数)が含まれ、隣り合う仕切証明書との間に「+」記号が存在します。
[]出力形式
は、文字列の各要素に必要で並べ替えが含まれ、ソートの結果を出力します。
あなたは、各隣接する二つの要素の間会う前と後の一つの要素が1個以下の要素になることを確認する必要があり、2つは隣接する要素間の「+」記号の分離を持っています。
サンプル入力[1]
3 + 2 + 1
[1]は出力サンプル
1 + 2 + 3
[2]入力サンプル
1 + 1 + 1 + 3 + 3
[2]は出力サンプル
1 + 1 + 1 + 3 +3
[3]サンプル入力
2
[3]の出力例
2
[分析]
まず、入力を処理する方法?
私たちは、入力がデジタル+文字であることがわかります。
非最後の要素のためのすべての要素は、その背後にある文字は「+」であると、ある;
最後の要素のために、文字は「\ nを」(EOFがあるかもしれない)とそれを以下の通りです。
そこで、我々は、C言語のscanf関数での使用に適しています。
[]、int型のNUMの変数、およびchar型の変数cを定義し、アレイのすべての要素を格納する
それぞれのscanf( "%d個の%のC" 、&​​NUM、&C) ] [配列にNUMをおよびcは入力端に、「の\ n」(またはEOF)であるか否かを決定します。
次いで、配列[]はソートされて出力されます。
次のようにコードは次のとおりです。

#include <ビット/ STDC ++ H> 
名前空間STDを使用して、

int型NUM、[110]、N。
char型のC; 

INTメイン(){ 
    (!のscanf( "%d個の%のC"、&NUM、&C)= EOF)一方{ 
        [N ++] = NUM。
        (C == '\ n'の|| C == EOF)であれば破ります。
    } 
    ソート(+ N)。
    {ため(iは++; iがn <I = 0 INT) '+')IF(I)のputcharと、
        printf( "%dの"、[I])。
    } 
    のputchar( 'の\ n'); 
    0を返します。
}

 

おすすめ

転載: www.cnblogs.com/ocac/p/11113429.html
おすすめ