2022年4月ブルーブリッジカップソフトウェア州大会:Zhenti + Analysis


質問A

質問A:9から10進数への変換
この質問の合計スコア:5ポイント
[問題の説明]
9つの正の整数(2022)9(2022)_92 0 2 2 9何に等しい小数に変換しますか?

解析:
(2022)9 = 2 ∗ 9 3 + 2 ∗ 9 1 + 2 ∗ 9 0 = 1478(2022)_9 = 2 * 9 ^ 3 + 2 * 9 ^ 1 + 2 * 9 ^ 0 = 14782 0 2 2 9=293+291+290=1 4 7 8

回答:
1478


質問B

質問B:Shunziの日付
この質問の合計スコア:5ポイント
[問題の説明]
XiaoMingはShunziがとても好きです。ストレートとは、123、456などの3つの連続した数字を指します。ストレート日付とは、連続する3桁の数字が日付のyyyymmdd表記でストレートである日付を指します。たとえば、20220123は、まっすぐに見えるため、まっすぐな日付です:123; 20221023はまっすぐな日付ではありませんが、まっすぐな日付はありません。Xiao Mingは、2022年全体でShunziの日付がいくつあるかを知りたいと考えています。

分析:
この質問は、推論能力をテストします。年はすでに決まっているので、2022mmddにストレートが入っているかどうかを判断するだけです。

  • mmには12の値、つまり01〜12があります。01、11、12のみが対象となり、他の月はストレートはできません。
  • 2022-01-ddの場合、2022-01-23のみが対象となります
  • 2022-11-ddの場合、2022-11-23のみが対象となります
  • 2022-12-ddの場合、2022-12-30および2022-12-31のみが対象となります。

回答:
つまり、回答は次のとおりです。4


質問C

質問C:統計
制限時間:1.0秒メモリ制限:256.0MBこの質問の合計スコア:10ポイント
[問題の説明]
Xiao Mingは、来週の月曜日からBlueBridgeCup大会の準備に一生懸命取り組むことにしました。彼は月曜日から金曜日まで毎日問題を起こし、土曜日と日曜日に毎日問題bを行う予定です。Xiao Mingが計画に従って、n以上の質問の数を達成する日を計算するのを手伝ってください。
【入力形式】
入力行には、a、b、nの3つの整数が含まれています。

分析:この質問はサブ質問であり、whileループを使用して解決できます。

答え:

#include<iostream>
using namespace std;

int main() {
    
    
	int a = 0, b = 0, n = 0;
	cin >> a >> b >> n;
	int day = 0;

	while (n > 0) {
    
    
		day++;
		if (day % 7 == 0 || day % 7 == 6) //周六、周天
			n -= b;
		else
			n -= a;
	}
	cout << day << endl;
	return 0;
}

質問D

質問D:低木の剪定
制限時間:1.0秒メモリの制限:256.0MBこの質問の合計スコア:10ポイント
[問題の説明]
アリスは低木の剪定のタスクを完了したいと考えています。
左から右にきれいに並んだN本の低木があります。アリスは、低木の高さが0 cmになるように、毎晩低木を剪定します。アリスの低木の剪定の順序は、左端の低木から始めて、毎日1つの低木を右に剪定することです。右端の低木がトリミングされると、彼女は振り返り、翌日左の低木をトリミングし始めます。左端の低木がトリミングされるまで、方向をもう一度回します。などなど。
茂みは朝から夕方まで1cmの高さになり、それ以外の時間は成長しません。初日の朝、すべての灌木の高さは0cmです。アリスは、各茂みがどれだけ高くなることができるか知りたいと思っています。

分析:
この質問は、各灌木の最大長を取得するためのシミュレーションによって推測できます。これらのN個の低木が次のようになっていると仮定します。n1n_1n1n 2 n_2n2、…、n N n_NnN

  • n 1 n_1n1たとえば、最も高い時間は、アリスがサイクルを完了したばかりのとき(つまり、左から右へ、右から左端まで)であり、このときの高さは2(N-1)です。
  • n2n_2の場合n2、左から右へのプロセスで、n 2 n_2n2n1n_1よりn11日後にカット;右から左へのプロセスでn2n_2n2n1n_1よりn11日前にカット;したがってn2n_2n2n1n_1よりn12 cm低いので、n 2 n_2n2最大高さは次のとおりです:2(N-2)
  • など、i <= N / 2の場合、ni n_in私はの最大高さは次のとおりです:2(Ni)
  • i> N / 2の場合、i <N / 2と対称関係を形成します。これは、直接シミュレーションによって取得できます。2 ∗(i − 1)2 *(i − 1)2私は1

答え:

#include<iostream>
using namespace std;

int main() {
    
    
	int N = 0;
	cin >> N;
	int height = 0;
	for (int i = 1; i <= N; i++) {
    
    
		if (i <= N / 2) {
    
    
			height = 2 * (N - i);
		}
		else {
    
    
			height = 2 * (i - 1);
		}
		cout << height << endl;
	}
	return 0;
}

質問E

質問E:Xベースの減算
制限時間:1.0秒メモリ制限:256.0MBこの質問の合計スコア:15ポイント
[問題の説明]
基本システムは、互いに追加される桁数を指定します。
Xベースは、各桁のベースが固定されていないため、非常に魔法のベースです。たとえば、特定のX基数、最下位桁が2進数、2桁目が10進数、3桁目が8進数の場合、X基数321は10進数65に変換されます。
現在、Xベースで表される2つの整数AとBがありますが、各桁の特定のベースはまだ不明です。AとBが同じベースルールであり、各桁が最大Nベースであり、最小値がバイナリ。ABの可能な限り最小の結果を計算してください。
AとBが基数Xで合法であること、つまり各桁の数字を確認する必要があることに注意してください。


質問F

質問F:部分行列のカウント
制限時間:1.0秒メモリ制限:256.0MBこの質問の合計スコア:15ポイント
[問題の説明]
N×M行列Aが与えられた場合、部分行列の数を数えます(最小1×1最大NxM)は、部分行列のすべての数の合計が指定された整数Kを超えないことを満たしますか?
[入力形式]
最初の行には、3つの整数N、M、およびKが含まれています。
次のN行には、それぞれ行列Aを表すM個の整数が含まれています。

解析:


質問G


質問H


質問I


質問J


注:この記事の回答は参照用です。この記事は常に更新されています。収集することをお勧めします。

おすすめ

転載: blog.csdn.net/wjinjie/article/details/124060707