2016年第4回C / C ++グループAブルーブリッジカップ州大会本当の質問

ブルーブリッジカップの長年にわたるトピックコラムです。更新され、前年度からの実際の質問と回答が公開されます。友達を歓迎して私に注意を払ってください。あなたの好きなものと注意が私にとって最高の動機です!
毎日1つの本当の質問を更新するので、お楽しみに

Lanqiaoカップの過去の論文と詳細な回答


質問1:ネチズンの年齢

トピックの説明
新しい友達がネチズンに会いました。
年齢について尋ねられたとき、彼のネチズンは
「私の年齢は2桁の数字です。私は息子より27歳年上です。
私の年齢の2桁を入れ替えると、息子の年齢になります。」と
計算してください。ネチズンの年齢には、いくつの状況が考えられますか?
注意:30歳は可能性の1つです。
考えられる状況の数を記入してください。
トピック分析
トピックコード



質問2:バースデーキャンドル

タイトルの説明
ある人は、ある年から毎年誕生日会を開いており、そのたびに年齢と同じ数のろうそくを吹き消しています。
今数えて、彼は合計236本のろうそくを吹き消しました。
すみません、彼は何歳で誕生日パーティーを始めましたか?
彼が誕生日パーティーを始めた年齢を記入してください。
トピック分析
トピックコード



質問3:四角に記入してください

トピックの説明
次のように10グリッド
ここに画像の説明を挿入

(表示に問題がある場合は、[図1.jpg]も参照してください)

0から9までの数字を入力してください。要件:2つの連続した番号を隣接させることはできません。
(左と右、上と下、および対角線はすべて隣接していると見なされます)

可能な充填スキームはいくつありますか?

プラン数を表す整数を入力してください。
トピック分析
トピックコード



4番目の質問:クイックソート

トピックの説明
並べ替えは、さまざまな状況でよく使用されます。
クイックソートは、非常に一般的に使用されている効率的なアルゴリズムです。
アイデアは次のとおりです。最初に「ルーラー」を選択し、
それを使用してキュー全体をふるいに
かけ、左側の要素がそれより大きくなく、右側の要素がそれより小さくないことを確認します。
このように、ソートの問題は2つのサブインターバルに分割されます。
次に、サブインターバルを個別にソートします。

次のコードは実装です。下線部分の欠落しているコードを分析して入力してください。

#include <stdio.h>

void swap(int a[], int i, int j)
{
    
    
	int t = a[i];
	a[i] = a[j];
	a[j] = t;
}

int partition(int a[], int p, int r)
{
    
    
    int i = p;
    int j = r + 1;
    int x = a[p];
    while(1){
    
    
        while(i<r && a[++i]<x);
        while(a[--j]>x);
        if(i>=j) break;
        swap(a,i,j);
    }
	______________________;
    return j;
}

void quicksort(int a[], int p, int r)
{
    
    
    if(p<r){
    
    
        int q = partition(a,p,r);
        quicksort(a,p,q-1);
        quicksort(a,q+1,r);
    }
}
    
int main()
{
    
    
	int i;
	int a[] = {
    
    5,13,6,24,2,8,19,27,6,12,1,17};
	int N = 12;
	
	quicksort(a, 0, N-1);
	
	for(i=0; i<N; i++) printf("%d ", a[i]);
	printf("\n");
	
	return 0;
}

トピック分析
トピックコード



質問5:最後のものを削除する

タイトルの説明
次のコードは、整数のバイナリ表現の右端の連続する1を0に
変更します。最後の桁が0の場合、元の数値は変更されません。

コードでテストデータを使用すると、次のように出力されます
。0000000000000000000000000110011100000000000000000000000001100000
00000000000000000000000000001100 00000000000000000000000000001100

プログラムを注意深く読み、下線部分に不足しているコードを記入してください。

#include <stdio.h>

void f(int x)
{
    
    
	int i;
	for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1);
	printf("   ");
	
	x = _______________________;
	
	for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1);
	printf("\n");	
}

int main()
{
    
    
	f(103);
	f(12);
	return 0;
}

トピック分析
トピックコード



6番目の質問:冬の宿題

トピックの説明
今、小学校の数学の問題はそれほど楽しいものではありません。
この冬の宿題を見てください:

□+□=□□
-□=
□□×□=
□□÷□=□

(表示されない場合は【図1.jpg】をご参照ください)

各正方形は1から13までの特定の数を表しますが、繰り返すことはできません。
例:
6 + 7 = 13
9-8 = 1
3 * 4 = 12
10/2 = 5

そして:
7 + 6 = 13
9-8 = 1
3 * 4 = 12
10/2 = 5

2つの解決策ですら。(加算と乗算は可換法則の後の異なるスキームです)

いくつの解決策を見つけましたか?

プラン数を表す整数を入力してください。
ここに画像の説明を挿入

トピック分析
トピックコード



質問7:切手を切る

タイトルの説明
[写真1.jpg]に示すように、12個の星座がつながった12個のスタンプがあります。
今、あなたはそれから5枚のシートを切り取らなければなりません、要件は接続されなければなりません。
(片隅を接続するだけでは接続とはみなされません)例えば
、[写真2.jpg]、[写真3.jpg]では、ピンク色で表示されている部分が修飾カットです。

さまざまなクリッピング方法がいくつあるかを計算してください。

プラン数を表す整数を入力してください。

ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入

トピック分析
トピックコード



質問8:4平方和

タイトルの説明
ラグランジアン定理としても知られる4つの平方和定理:
各正の整数は、最大4つの正の整数の2乗の合計として表すことができます。
0を含めると、4つの数値の2乗の合計として表すことができます。

例:
5 = 0 ^ 2 + 0 ^ 2 + 1 ^ 2 + 2 ^ 2
7 = 1 ^ 2 + 1 ^ 2 + 1 ^ 2 + 2 ^ 2
(^記号は電力を意味します)

与えられた正の整数に対して、二乗和の複数の表現が存在する可能性があります。
次の4つの数値を並べ替える必要があります:
0 <= a <= b <= c <= d
可能なすべての表現を、ジョイント主キーとしてa、b、c、dの昇順で並べ、最後に最初の表現を出力します。

プログラム入力は正の整数N(N <5000000)で
あり、4つの非負の整数を出力し、小さいものから大きいものへと並べ替え、スペースで区切る必要があります。

たとえば、入力:
5
、プログラムは出力する必要があります:
0 0 1 2

別の例として、入力:
12
、プログラムは出力する必要があります:
0 2 2 2

別の例として、入力:
773535
、プログラムは次のように出力する必要があります:
1 1 267 838

リソースの合意:
ピークメモリ消費
量<256MCPU消費量<3000ms
質問分析
質問コード



質問9:パスワードの紛失

タイトルは
、惑星Xの考古学者が多くの古代のコードを発見したことを説明しています。
これらのコードは、4つの植物A、B、C、およびDの種子で構成されるシーケンスです。
注意深く分析すると、これらのパスワード文字列は対称的である必要があることが明らかになりました(つまり、ミラー文字列と呼ばれるもの)。
年齢により、種子の多くが脱落し、鏡像特性を失う可能性があります。

あなたの仕事は次のとおりです。
現在表示されているパスワード文字列を指定して、現在の状態になる前に元の状態から削除する必要のあるシードの数を計算します。

現在表示されているパスワード文字列(長さが1000以下)
には、少なくともドロップされるシードの数を示す正の整数が必要であることを示す行を入力します

たとえば、入力:
ABCBA
、プログラムは出力する必要があります:
0

別の例として、入力:
ABDCDCBABC
、プログラムは次のように出力する必要があります:
3

リソースの合意:
ピークメモリ消費量<256MCPU
消費量<1000ms
質問分析
質問コード



質問10:最大比率

タイトルは
、Mレベルの賞を受賞したPlanetXでの特定のグランプリについて説明しています。各レベルのボーナスは正の整数です。
また、隣接する2つのレベル間の比率は固定値です。
つまり、すべてのレベルのボーナス数は等比数列を構成します。例:等しい比率が3/2である
16,24,36,54

今、私たちはいくつかの勝者の賞数をランダムに調査しました。
これに基づいて可能な最大の比率を計算してください。

入力形式:
最初の行は数値N(0 <N <100)です。これは、次の行にN個の正の整数が含まれていることを意味します
。2番目の行には、スペースで区切られたN個の正の整数Xi(Xi <1 000 000 000 000)が含まれています。 。各整数は、調査対象の誰かのボーナスの額を表します

必要な出力:
A / Bの形式のスコアで、AとBが互いに素である必要があります。可能な最大のスケールファクターを表します

テストデータは、入力形式が正しく、最大比率が存在することを確認します。

たとえば、入力:
3
1250 200 32

プログラムは出力する必要があります:
25/4

別の例では、入力:
4
3125 32 32 200

プログラムは次のように出力する必要があります:
5/2

別の例として、次のように入力します
3
549755813888 524288 2

プログラムは出力する必要があります:
4/1

リソースの合意:
ピークメモリ消費
量<256MCPU消費量<3000ms
質問分析
質問コード



おすすめ

転載: blog.csdn.net/kiwi_berrys/article/details/111462788