ブルーブリッジ・カップ・グループB試合省の質問年C / C ++ ---- 2014インディアンオーバー

1、

ビール・飲料
ビールポット当たり2.3元は、ポット当たり1.9元を飲みます。暁明は、いくつかのビールや飲み物を買って82.3元の合計を過ごしました。
我々はまた、彼が飲み物の数よりも少ないビールを買ったことを知って、あなたは彼がビールの少数の缶を買って計算します。
アイデア:ループ精度の問題に注意を経て、数はお金を計算するために10を乗じました。

ビールX、Yドリンク

X <Y

2.3倍+ 1.9y == 82.3

- > 23X + 19Y == 823

//飲むビール
書式#include <stdio.hに>
INTメイン(){
	私は、jはint型。
	ための式(I = 0; iが<44; I ++){
		用(J = 0であり、j <44; J ++){
			もし(I <J &&(23 * I + 19 * J)== 823)
				printf( "ビール:%dの"、I);
		}
	}
	0を返します。
} 

2、

ヌードル

高グルテン麺、中間切断ナイフ二麺を得ることができます。

1第1折り、中間切断ナイフ、3本の麺を得ることができる場合。

連続中間ナイフ切断、二回折り畳まれた場合、5本の麺を得ることができます。

だから、連続は、ミドルカットバックを10回折り畳まれ、それははるかにパスタを得るのだろうか?

アイデア:

二重襞の数はわずか10、データサイズが大きいではないので、単純な手計算によって完成させることができます。

0倍2倍を得ます。

、1倍、2 * 2--1 = 3を与えます

= 5 3 * 2--1を得るために、二回つ折り

つ折り3回与えるために5 * 2--1 = 9

つ折り4回は9 * 2--1 = 17を与えるために

= 33 17 * 2--1を得るために、5回を折ります

= 65 33 * 2--1を得るために、6回つ折り

、7回を折る65 * 2--1 = 129を得るために、

= 257 129 * 2--1を得るために、8回つ折り

257 * 2--1 = 513を与えるために、9倍

= 1025 513 * 2--1を得るために10回つ折り

 

実際には、上記の考え方は再帰的で、私たちはコードをこのアイデアを置くことができます。

基本的な再帰と再帰的末尾再帰二つの形式、それぞれ商品コード。

末尾再帰ある程度は、基本パラメータより再帰の通常複数のプログラム効率を向上させることができます。

スタックの再帰的な性質は、もちろん、それは、スタックオーバーフローを防ぐために来るとき、明示的に特に大きなデータ・スタックを使用するために、実装を積み重ねることができています。

F(1)= 3。

F(N)= F(N-1)* 2-1。

 

回答:1025

 

//麺
//再帰
書式#include <stdio.hに>

int型F(int型N){
	IF(N == 0)
		2を返します。
	他の{
		2 * F(N-1)-1を返します。
	} 
}
INTメイン(){
	INT、N = 10。
	printf( "%dの"、F(N))。
	0を返します。 
} 

  

 

3、李白ポーター

 

偉大な詩人李白、そして彼の良い飲み物の言葉。幸いなことに、彼は運転したことはありません。

ある日、彼は水差しワインバケット2に、家の外に、水差しを搭載しました。文字列の彼の生命:

路上でどんなにウォーキングは、ワインを再生するために鍋を入れていません。

すべての店が倍増し、ケースはドリンクバケツを取りました。

途中で、彼は花は、最後の既知の出会いを過ごした、10回に遭遇した彼はただ酒を飲んで、5店舗の合計に会いました。 

してください仕事ショップと会った李白の順序の花は、あなたがの場合として記録保存することができ、イベントはと表さBを取りました。その後:babaabbabbabbbbは、合理的な順序です。このような答えは、それをどのくらいの合計?(指定されたタイトルを含む)すべての可能なオプションの数をうまくしてください。

アイデア:DFS

 

 

回答:14

//再帰
書式#include <stdio.hに>
int型NUM = 0;
INT F {(INT B、INT cをINT)
	(> 0)であれば	
		F(1、B、C * 2)。
	(B> 0)であれば
		F(A、B-1、C-1)。
	IF(== 0 && B == 0 && C == 1)
		++; 
}
INTメイン(){
	F(5,9,2)。
	printf( "%dの"、NUM)。
	0を返します。
}  

4、

収穫迅速な計算履歴

収穫高速アルゴリズムの歴史に革命貢献は次のとおりです。ハイレベルから日付、予測キャリー。九九を必要としない、伝統的な手の数に革命を起こしました!

迅速な計算の中核基盤は次のとおりです。1桁が多桁の掛け算を掛けました。

このうち、7倍は一例として、それを取り、最も複雑です。

1/7は循環小数であるので:0.142857 ...、複数桁の数字以上142857場合は...、1を入力します

同様に、2/7、3/7、6/7は...も同様の循環小数であり、より多くのビットN / 7の数よりも、Nに入ります

次のプログラムは、収穫7の履歴を乗じた演算処理速度アルゴリズムをシミュレートします。

7ビットは法律によって乗算される:2偶数乗じ、奇数の2プラス5を乗じ、ビットのみが取ら。

7を乗じたキャリー法律は次のとおりです。

...フル142857に、

285714以上... 2に、

428 571 ... 3フルに、

571428 ...フル4に、

714 285 ... 5フルに、

857 142 ... 6いっぱいに

解析プログラムの流れ、下線部欠落しているコードを入力してください。

回答:もし(R> 0)私は返します 

5、

グラフィックスを印刷

暁明は、惑星Xの城で、次のグラフィックスとテキストが見つかりました:

ランク= 3

   * 

  * * 

 * *  

* * * *

ランク= 5

               *                                                      

              * *                                                     

             * *                                                    

            * * * *                                                   

           * *                                                  

          * * * *                                                 

         * * * *                                                

        * * * * * * * *                                               

       * *                                              

      * * * *                                             

     * * * *                                            

    * * * * * * * *                                           

   * * * *  

  * * * * * * * *  

 * * * * * * * * 

* * * * * * * * * * * * * * * *  

RAN = 6

                               *                                      

                              * *                                     

                             * *                                    

                            * * * *                                   

                           * *                                  

                          * * * *                                 

                         * * * *                                

                        * * * * * * * *                               

                       * *                              

                      * * * *                             

                     * * * *                            

                    * * * * * * * *                           

                   * * * *                          

                  * * * * * * * *                         

                 * * * * * * * *                        

                * * * * * * * * * * * * * * * *                       

               * *                      

              * * * *                     

             * * * *                    

            * * * * * * * *                   

           * * * *                  

          * * * * * * * *                 

         * * * * * * * *                

        * * * * * * * * * * * * * * * *               

       * * * *              

      * * * * * * * *             

     * * * * * * * *            

    * * * * * * * * * * * * * * * *           

   * * * * * * * *          

  * * * * * * * * * * * * * * * *         

 * * * * * * * * * * * * * * * *        

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *       

暁明の脳は、グラフィックスを印刷し、次の手順を書きました。

答案:F(、ランク1、行、COL + W / 2)

----------------

6、

奇妙な分数

小学校、暁明は、多くの場合、新しいアルゴリズムを発明しました。トピックの先生、一度:

8/5を乗じた1/4 

暁明は実際に分子が一緒にスプライスされ、分母が一緒にスプライス、答えは:45分の18(図の1.pngを参照してください)

先生は、私が考えた、答えは右ああ、本当に地獄であることを起こる、彼を批判することを約ありました!

分子と分母のために9桁のケース1は、どのようなこの式は、それを計算することができますか?

例えば明らかに、分子と分母の交換後、:4/1が要件を満たすために5/8を乗じ、それが異なる式としてカウントされます。

しかし、同じケースのための分子と分母は、2月2日には、リストを数えていない、あまりにも多くの種類の3/3を乗じました!

(例のタイトルを含む)すべての異なる式の番号を記入してください。

アイデア:ループを通ります。

回答:14

書式#include <stdio.hに>
INTメイン(){
	int型のX1、X2、Y1、Y2;
	int型NUM = 0;
	用(X1 = 1; X 1 <= 9; X 1 ++){
		用(X2 = 1; X 2 <= 9; X2 ++){
			(X1 == x2は)継続であれば、 
			用(Y1 = 1; Y 1 <= 9; Y1 ++){
				用(Y2 = 1; Y 2 <= 9; Y2 ++){
					もし(Y1 == Y2)続けます。
					もし((X1 * Y1)*(10 * X2 + Y2)==(X2 * Y2)*(10 * X1 + Y1))
						++;
				}
			}
		}
	}
	printf( "%dの"、NUM)。
	0を返します。 
}

7、

六角形のパッキングの数は、 
図の六角形に示すように、12までの番号1を入力します。
このような各直線上の数字の合計とは同じであること。
図、すでにあなたのための3つの数字を記入し、あなたの数値は、アスタリスクの位置がどのくらいされて表して計算しますか?

アイデア:DFS


回答:10

 

 

8、

蟻の寒さ 

N-アリ100センチ直ポール細長いです。彼らの頭といくつかの左、右にいくつか。 

各ANTは、速度を1cm / secである、ポールに沿って前方にクリープすることができます。

2匹のアリが出会うとき、反対方向にクロール中、彼らは好転します。

これらのアリ、アリは風邪をひいています。そして、ときに他のアリ、あなたが遭遇する風邪にアリを満たしています。

してください仕事、すべてのアリは、極から離れてクロールされたとき、どのように多くの寒さに苦しんアリ。

[データ形式]

入力整数N(1 <N <50)の最初の行は、アリの総数を表します。

続いてN行が西(-100 <Xiの<100)、西、ポールの左端から離れるアリの絶対値が整数スペースで区切られています。正の値は左方向にヘッドが負の値を表し、データ値0が表示されない、それは2匹の蟻が表示され、同じ位置を占めていないだろう、頭の右方向を示しています。風邪のその中でも、アリ最初のデータの代表。

アリ最終冷間の数を表す整数要求出力。

たとえば、次のコマンドを入力します。

3

5 -2 8

プログラムSHOULD出力:

1

別の例では、入力:

5

-10 8 -20 12 25

プログラムSHOULD出力:

3

以下のためのリソース:

ピークメモリ消費量<256M

CPUの消費量<1000ミリ秒

「入力してください...」不要なコンテンツ:厳密に出力の要件に従ってください、余計ないようなものを印刷します。

1つのファイルにすべてのソースコードは、デバッグを通じて、コピー元を提出します。

注:主な機能のニーズは0を返します

注:のみを使用してANSI C / ANSI C ++標準では、特別な機能はビルド環境やオペレーティングシステムに依存して呼び出すことはありません。

注:すべての依存の機能を明示的にする#include <xxx>の、一般的に省略したプロジェクトのソースファイルのヘッダ・ファイルでは提供できない必要があります。

あなたが送信すると、注意を払うには、コンパイラの所望のタイプを選択します。

 

 

アイデア:あなたはアリを入力する最初の寒さは、それが左または右、二つの方向があります。

それが残っている場合:

次に、入力データのセットは、入力が完了した後、我々は、それぞれいくつかのアリを配置ストレートロッド0-100、のルートは、各ANTは方向を持っていることを、知ることができます。

アリの鳥インフルエンザは、その後、レバーの直線位置は、それは、中心として左右二つの部分に直線ロッドであろう

ちょうど左のことを冷たいので、その左にアリストレートポールは、長い右のように、そして最終的に寒されるため。この時点で、長い右にアリ歩行があったそれの左にまっすぐなバーなどとして、その後、蟻を行くために左にその右、最後に行くにストレートロッドは確かに寒いだろう。そうでない場合は1、それが最終的にだけで風邪を持つことになりますので、こと、右蟻に行くために残しました。

それはすぐに同じように計算された場合。

だから、最後には、ストレートポールに、インフルエンザの総数はそれがアリの最初の寒さのためであること、それの側が反対方向にアリの総数はどこへ行く方向に行くことを、すべてのアリ、との総数場合でしょう行ってきましたそれが0ではない、それに加えて直棒位置の右へまっすぐなロッドアリアリにおいて同じ方向にその作用の合計数。最後の答えとして、それ自体に結合されました

----------------

9、

地下宮殿の宝物を取ります

王のXは、地下宮殿宝庫宝物を持っています。n×mの格子行列です。各グリッドは、赤ちゃんを置きます。ラベルの値に、それぞれの赤ちゃんに近いです。

上部の地下宮殿の入り口には、右下隅にある出口にコーナーを残しました。

ボブは、地下宮殿の入口に撮影された、王は右または下のみに歩くように頼みました。

グリッド値は、赤ちゃんがどんな赤ちゃん暁明の手の値よりも大きい場合には、暁明は(もちろん、あなたが取ることができない)それを拾うことができ、グリッドによって歩きました。

ボブは、出口に行ったとき、彼は赤ん坊のk個の手の中にあることを起こる場合は、その後、赤ちゃんはボブに与えられます。

してくださいヘルプ暁明は、与えられた状況で、彼はこのk個の宝物を得るために、異なる作用コース数を持っている、と語りました。

[データ形式]

3整数入力ラインは、スペースで区切られた:NMK(1 <= N、M <= 50、1 <= K <= 12)

次いで、N行はそれぞれの行を有するm個の整数は、CI(0 <= CI <= 12)の値の二乗の宝物の代表的存在であります

Aは、ちょうどk個の赤ちゃんを取るアクションプログラムの数を表す整数出力を必要としていました。この数値は大きいかもしれない、その出力は十億七を法。

たとえば、次のコマンドを入力します。

2 2 2

1 2

2 1

プログラムSHOULD出力:

2

別の例では、入力:

2 3 2

1 2 3

2 1 5

プログラムSHOULD出力:

14

以下のためのリソース:

ピークメモリ消費量<256M

CPUの消費量<1000ミリ秒

「入力してください...」不要なコンテンツ:厳密に出力の要件に従ってください、余計ないようなものを印刷します。

1つのファイルにすべてのソースコードは、デバッグを通じて、コピー元を提出します。

注:主な機能のニーズは0を返します

注:のみを使用してANSI C / ANSI C ++標準では、特別な機能はビルド環境やオペレーティングシステムに依存して呼び出すことはありません。

注:すべての依存の機能を明示的にする#include <xxx>の、一般的に省略したプロジェクトのソースファイルのヘッダ・ファイルでは提供できない必要があります。

あなたが送信すると、注意を払うには、コンパイラの所望のタイプを選択します。

 

 

アイデアは:メモリの4次元配列は、直接、ああDFS三の大質問後で見る、私は直接DIY質問、4次元配列タグで開始する最善のことを感じました。

----------------

 

 

10、

子供のラインアップ

N番目の子は行に立って。さて、高さの順にローからハイにそれらを配置していますが、唯一の位置、隣接する2人の子供を交換することができます。

それぞれの子は、動揺度を有しています。最初は、すべての子どもがゼロであることを動揺度。

1が初めての子どもを交換するように求めていた場合、彼は(あること、動揺3度)、およびその上の2増加不幸度だ場合は、2番目の交換は彼に尋ねたならば、彼は1度の増加は、幸せではないのです。子供はk番目の交換、彼の不幸な増加度kを必要とするとき。

すみません、彼らは幸せとどのくらいの最低限度ではありません、すべての子どもたちがローからハイに並ぶましょう。

あなたは関連していない彼らの前に立っている2人の子供と同じ高さを、持っている場合。

[データ形式]

入力整数n、子供の数の最初の行を含みます。

2行目では、nは整数、それぞれ、それぞれの子の高さH1 H2 ... Hnのが、含まれています。

整数を含む出力ライン、および子供の動揺の最小度合いを示します。

たとえば、次のコマンドを入力します。

3

3 2 1

プログラムSHOULD出力:

9

[サンプル記述]

子供2および3のための第1の高さを交換した後、子供3と1の高さを交換した後、子供1及び2の高さを交換し、それぞれの子の程度は、9の合計、3幸せです。

スケールデータと[合意]

    データの10%が、1 <= N <= 10。

    データの30%、1 <= N <= 1000。

    データの50%、1 <= N <= 10000。

    データの100%、1 <= N <= 100000,0 <=こんにちは<= 1000000です。

以下のためのリソース:

ピークメモリ消費量<256M

CPUの消費量<1000ミリ秒

「入力してください...」不要なコンテンツ:厳密に出力の要件に従ってください、余計ないようなものを印刷します。

1つのファイルにすべてのソースコードは、デバッグを通じて、コピー元を提出します。

注:主な機能のニーズは0を返します

注:のみを使用してANSI C / ANSI C ++標準では、特別な機能はビルド環境やオペレーティングシステムに依存して呼び出すことはありません。

注:すべての依存の機能を明示的にする#include <xxx>の、一般的に省略したプロジェクトのソースファイルのヘッダ・ファイルでは提供できない必要があります。

あなたが送信すると、注意を払うには、コンパイラの所望のタイプを選択します。

アイデア:フェンウィックツリー

 

おすすめ

転載: www.cnblogs.com/Hqx-curiosity/p/11945111.html