「アルゴリズムの注意」の取得シミュレーション

1.PAT B1001:(3N + 1)の推測のキル魅力

Kharazi(Callatz)の推測:

任意の正の整数のために  、それが偶数である場合、N、それは半分、それが奇数である場合、  (特定与える最終工程において、このように繰り返してきカットを半減。  N- = 1 Kharaziこの推測に公開数学の1950年世界会議は、伝説のエール大学の教師と学生啓東元は、必死にこの一見愚かな素朴な命題は、学生が不注意そんなにノイズ研究を引き起こすことを証明したいし、1つののみの証明書  (その誰か彼はKharaziが意図的にアメリカの数学教育と研究の進展を遅らせた、それは陰謀であると言いました......

私たちの話題は本日、証拠民家ラズ予想ではなく、任意の正の整数で千を超えない  N、単に取得する必要があります(数カット)どのように多くの手順、数を数える  N- = 1を?

 サンプル入力:3

 出力例:5
 
解像度:
言語の使用:C ++(C ++入力と出力の非常にシンプルなので)
思想:whileループは、一旦最終入力センチネルの値をよりセンチネルを支払うたびにループするまで、n = 1で、また、センチネルを定義するまでしばらく
#include <iostreamの>
 使用して 名前空間STD;
 int型のmain(){
     int型のn; //は、正の整数nは定義
    INT COUNT = 0 ; //はセンチネル定義 
    CIN >> N; // C ++入力ストリームの入力値nは
    、一方(nは!= 1){ // インビボwhileループ終了条件記憶
        IF(N-%2 == 0 
            N - = N / 2 ; // 2除く偶数
        
            N- =(3 * N-+ 1)/ 2 ; // 奇数2による除算を添加することによって3
        ++ COUNT ; 
    } 
    COUT << COUNT; // 出力ストリーム 
}

2.PAT B1032:ショベル強いです

強力なエンドでの事実ショベルどちらを説明するために、PATの掘削機は、スキルの競争を組織しました。今最強の専門学校の統計は、競争の結果に基づいていること。

入力フォーマット

入力は超えていない最初の行に示され  た整数正  N、エントリのすなわち数。次いで、  Nラインは、それぞれ、すべての参加者は、彼らが(連続番号1から始まる)番号を表し、学校などの情報や結果を、与えられ、ゲームのスコア(パーセンタイル)、スペースで区切ら。

出力フォーマット:

行の最も高い総スコア、学校の数、およびそれらの総スコアを与え、スペースで区切られました。唯一の答えは、被写体が結ばれていないことを確認することです。

サンプル入力:

6 
3  65 
2  80 
1  100 
2  70 
3  40 
3  0

解像度:

  まず、配列に格納されている掘削機CIN必要な標準入力ストリーム入力の総数Nは、彼らが学校を含んで表すことに留意すべきである[数(1から始まる連続番号)]、配列を初期化する必要性を示しますnは1から始まるように設定されるべきであるN + 1のアレイ。ループのために、何度も何度も循環された後、各値は、学校の和でなければならないため、入力CIN循環で同時に、入力は、最大値を見つけるために、請求、同時に実行される - > [学校:アレイ標準;学校スコア:値の配列]。

  どのように最大値を見つけるには?得ることができるいくつかの方法があり、最も簡単に、スタート設定最大値= 0を話すと最大を仮定すると、アレイの値は、この中に記録された最大値の値よりも大きい場合、順次、forループ比較最終的に最大の最大値であることを確実にするために最大にそれを添字と割り当て、結果のインデックスは最大値を取得するための学校は結果であり、学校です。

#含める<iostreamの> 
#含める <アルゴリズム> 
#含める <stdio.hに> 
#には、 < 文字列 >
 使用して 名前空間はstdを、

INT のmain(){
     int型、N、H、CJ、最大= 0 、MAXH。
    cinを >> N;
    int型 [N + 1 ]。
    以下のためにINT iが= 1 ; I <= N; I ++ ){ 
        [I] = 0 ; 
    } 
    のためのINT J = 1 ; J <= nであり、j ++ ){ 
        CIN >> H >>CJ; 
        [H]は [H] + = CJと、
        もし(MAX < [H]){ 
            最大 = [H]。
            MAXH = H; 
        } 
    } 
    coutの << MAXH << "  " << マックス。
    リターン 0 ; 
}

3.PAT B1036:オバマ氏と一緒にプログラム 

  バラク・オバマ米大統領は、プログラミングを学ぶために皆にアピール、さらにはアメリカの歴史の中で最初の大統領になるために書き込みコード、書き込みコンピュータコードに例を設定していないだけ。「コンピュータサイエンス教育週間」を祝うために2014年の終わりが、正式に発足した、オバマ氏は、コンピュータコードを書いた非常に単純です:画面上の正方形を描きます。今、あなたは彼と一緒にそれを描きます!

入力フォーマット:

指定された入力行正方形側長  N(正方形側と文字Cの一方、空間間隔からなる3)。

出力フォーマット:

正方形の描かれた指定された文字からC出力。しかし、行間隔、列間隔よりも大きいことに留意するので、結果は、より正方形に見えるようにするために、我々出力ラインの数は、実際には(最も近い整数に丸めた)の列数の50%です。

サンプル入力:

10 a
出力例:
AAAAAAAAAAの
AA 
AAの
AAの
AAAAAAAAAA

分析:丸め、本質的には、(N + 1)/ 2です。

    nが偶数(N + 1)/ 2明らかで除算(N + 1)/ 2 = N / 2である場合

    (N + 1)/ 2と比較し、奇数である場合はnは

   最初の行およびすべての出力の最後の行の出力、2〜N-1ラインの終了のための第二時間は、二重ループの溶液のために使用される入力A、入力中間空間を、終了する場合

書式#include <iostreamの>
 使用して 名前空間はstdを、
INT のmain()
{ 
    int型N。
    char型のC; 
    CIN >> N >> C。

    以下のためにINT iが= 0 ; I <(N + 1)/ 2 ; I ++)// 四舍五入的本质
    {
         ためINT J = 0 ; J <N; J ++ 
        { 
            場合(I == 0 || I == (N - 1)/ 2 || J == 0 || J == N - 1//I == 0とI ==(N-1)/ 2は、 すべての文字出力の最初と最後の行表す 
               COUT << C;                                            //が出力する文字ニーズの最初と最後の行の残りの
            
                COUTを < < '  ' ; 
        } 
        COUT <<てendl; // ラップ
    } 

    の戻り 0 ; 
}

 

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/Whgy/p/12163289.html