ブルーブリッジカップ省試合シミュレーションC/C++


冒頭に書く
このコードはすべて作者のシミュレーション試合の時に書いたもので、改善点があれば、提出を歓迎します.
第一題
問題の説明
コンピュータストレージで、12.5 MBは何バイトですか?
回答の提出
これは結果を記入する問題で、結果を算出して提出すればいいだけです.本題の結果は1つの整数で、解答を提出する時にこの整数だけを記入して、余分な内容を記入して得点することができません.
答え
13,107,200‬
12.5(MB)*1024(KB)*1024(B)
第二題
問題の説明
LANQIAOのアルファベットを並べ替えると、LANQIAO、AAILNOQなど、異なる単語が得られます.この7文字が使われることに注意してください.単語には必ずしも具体的な英語の意味がありません.すみません、全部で何個の単語が並べられますか.
回答の提出
これは結果を記入する問題で、結果を算出して提出すればいいだけです.本題の結果は1つの整数で、解答を提出する時にこの整数だけを記入して、余分な内容を記入して得点することができません.
答え
2520
配列の組み合わせ、7!/2
第三題
問題の説明
1つのパケットには2019個のノードの無方向連通図が含まれており、少なくとも何個のエッジが含まれていますか?
回答の提出
これは結果を記入する問題で、結果を算出して提出すればいいだけです.本題の結果は1つの整数で、解答を提出する時にこの整数だけを記入して、余分な内容を記入して得点することができません.
答え
2018
第四題
問題の説明
1対の括弧から、合法的な括弧シーケンス:()を構成できます.2対の括弧から、()()、()の2つの合法的な括弧シーケンスを構成できます.4対の括弧からなる合法的な括弧のシーケンスは全部で何種類ありますか?
回答の提出
これは結果を記入する問題で、結果を算出して提出すればいいだけです.本題の結果は1つの整数で、解答を提出する時にこの整数だけを記入して、余分な内容を記入して得点することができません.
答え
14
(((()))) ((()())) ((())()) ((()))() (()(())) (()()()) (()())() (())(()) (())()() ()((())) ()(()()) ()(())() ()()(()) ()()()()
第五題
問題の説明
3つの整数a,b,cが与えられ、1つの整数がaの整数倍でもbの整数倍でもcの整数倍でもない場合、この数を逆倍数と呼ぶ.すみません、1からnの中で何個の反倍数がありますか.
入力フォーマット
入力された最初の行には整数nが含まれます.2行目は3つの整数a,b,cを含み、隣接する2つの数の間に1つのスペースで区切られている.
出力フォーマット
出力行には、答えを表す整数が含まれます.
サンプル入力
30 2 3 6
サンプル出力
10
サンプルの説明
以下の数は要求を満たす:1,5,7,11,13,17,19,23,25,29.
評価用例の規模と約束
40%の評価例では、1<=n<=10000であった.80%の評価例では、1<=n<=100000であった.全ての評価例について、1<=n<=1000000、1<=a<=n、1<=b<=n、1<=c<=nである.
コミットコード
#include
using namespace std;
int main()
{
	int n, a, b, c, i, f;
	f = 0;
	scanf("%d", &n);
	scanf("%d%d%d", &a, &b, &c);
	for (i = 1; i <= n; i++)
	{
		if ((i % a != 0) && (i % b != 0) && (i % c != 0))
			f++;
	}
	printf("%d", f);
	return 0;
}

第六題
問題の説明
単語を指定するには、シーザーパスワードを使用してこの単語を暗号化してください.シーザーパスワードは暗号化を置き換える技術で、単語のすべてのアルファベットがアルファベット表上で3桁後ろにずれた後、密文に置き換えられる.すなわちaはd,bはe,...,wはz,xはa,yはb,zはcとなる.たとえばlanqiaoはodqtldrになります.
入力フォーマット
単語を含む行を入力します.単語には小文字の英字しか含まれません.
出力フォーマット
暗号化された暗号文を表す行を出力します.
サンプル入力
lanqiao
サンプル出力
odqtldr
評価用例の規模と約束
すべての評価例について、単語のアルファベット数は100を超えない.
コミットコード
#include
#include
int main()
{
	int i, l;
	char a[100];
	gets(a);
	l = strlen(a);
	for (i = 0; i < l; i++)
		a[i] = a[i] + 3;
	puts(a);
	return 0;
}

第七題
問題の説明
n行m列の表については,スパイラル方式を用いて表に正の整数を順次記入することができ,記入した表をスパイラル行列と呼ぶ.例えば、4行5列の螺旋行列は、1 2 3 4 5 14 16 17 6 13 19 18 7 12 11 10 8
入力フォーマット
入力された最初の行は2つの整数n,mを含み、それぞれ螺旋行列の行数と列数を表す.2行目は、要求される行番号と列番号を表す2つの整数r,cを含む.
出力フォーマット
スパイラルマトリクスのr行c列目の要素の値を表す整数を出力します.
サンプル入力
4 5 2 2
サンプル出力
15
評価用例の規模と約束
30%の評価例では、2<=n、m<=20であった.評価例の70%に対して2<=n,m<=100であった.すべての評価例について、2<=n、m<=1000、1<=r<=n、1<=c<=mである.
コミットコード
#include
int a[1000][1000];
int main()
{
	int n, m, r, c, i = 0, j = 0, sum, k = 1, x = 0, y = 0;
	scanf("%d%d", &n, &m);
	scanf("%d%d", &r, &c);
	if (n <= m)
	{
		sum = n / 2;
		if (n % 2 == 1)
			y = 1;
	}
	else
	{
		sum = m / 2;
		if (m % 2 == 1)
			y = 1;
	}
	while (x < sum)
	{
		for (j = x; j < m - x; j++)
		{
			a[i][j] = k;
			k++;
		}
		j--;
		for (i = x + 1; i < n - x; i++)
		{
			a[i][j] = k;
			k++;
		}
		i--;
		for (j = m - x - 2; j >= x; j--)
		{
			a[i][j] = k;
			k++;
		}
		j++;
		for (i = n - x - 2; i >= x + 1; i--)
		{
			a[i][j] = k;
			k++;
		}
		i++;
		x++;		
	}
	if(y)
		for (j = x; j < m - x; j++)
		{
			a[i][j] = k;
			k++;
		}
	printf("%d", a[r - 1][c - 1]);
	return 0;
}

グローバル変数を使用しないと、配列の長さが範囲を超え、エラーが発生します.
第八題
問題の説明
1つのシーケンスの奇数アイテムが前のアイテムよりも大きく、偶数アイテムが前のアイテムよりも小さい場合は、スイングシーケンスと呼ばれます.すなわちa[2 i]a[2i]。 明ちゃんは、長さがmで、数ごとに1からnの間の正の整数の揺動シーケンスが全部で何個あるか知りたいと思っています。
入力フォーマット
入力1行には2つの整数m,nが含まれます.
出力フォーマット
答えを表す整数を出力します.答えは大きいかもしれませんが、答えを10000で割った余りを出力してください.
サンプル入力
3 4
サンプル出力
14
サンプルの説明
以下は要求に適合する揺動シーケンスである:2 1 2 1 3 2 1 3 1 4 3 1 3 3 3 1 4 3 3 3 2 4 4 4 1 4 4 4 1 3 4 4 4 4 4 4 4 4 4 4 4 4 4
評価用例の規模と約束
20%の評価例について、1<=n、m<=5;50%の評価例について、1<=n、m<=10;80%の評価例について、1<=n、m<=100;すべての評価例について、1<=n、m<=1000であった.
コミットコード
  。。。

第九題
問題の説明
2015年、全中国で戸戸通電を実現した.電力建設者として、明ちゃんは一帯の国の通電を手伝っています.今回、明ちゃんはnの村の通電を助けなければならない.そのうち1番の村にはちょうど発電所が建てられ、発電した電気はすべての村で使用するのに十分だ.今、このnの村の間には電線がつながっていません.明ちゃんは主に電線を架けてこれらの村をつなぎ、すべての村が直接または間接的に発電所に通じているようにします.明ちゃんはすべての村の位置(座標)と高さを測定し、2つの村を接続するには、明ちゃんは2つの村の間の座標距離に高さ差の二乗を加え、座標(x_1,y_1)の高さをh_として形式化する必要がある.1の村と座標は(x_2,y_2)高さはh_2の村間接続の料金はsqrt((x_1-x_2)(x_1-x_2)+(y_1-y_2)+(h_1-h_2)*(h_1-h_2)である.上式ではsqrtは括弧内の平方根を表す.括弧の位置、高さの計算方法は横長座標の計算方法とは異なりますのでご注意ください.経費が限られているので、明ちゃんが少なくともどのくらいの費用をかけてこのnの村に電気を通すことができるか計算してください.
入力フォーマット
入力された最初の行には、村の数を表す整数nが含まれます.次にn行、各3つの整数x,y,hは、それぞれ1つの村の横、縦座標、高さを表し、そのうち最初の村は発電所を建設することができる.
出力フォーマット
実数を含む1行を出力し、2桁の小数を四捨五入して保持し、答えを表す.
サンプル入力
4 1 1 3 9 7 8 8 6 4##3サンプル出力17.41
評価用例の規模と約束
30%の評価例について、1<=n<=10;60%の評価例について、1<=n<=100;すべての評価例について、1<=n<=1000、0<=x、y、h<=10000である.
コミットコード
  。。。

第十題
問題の説明
明ちゃんは友达と一緒に郊外に木を植えに行きました.彼らは自分の実験室で丹念に研究した小さな苗木を持ってきました.明ちゃんと友达は全部でn人で、彼らは丹念に選んで、1つの空き地の上ですべての人が植樹に適した位置を選んで、全部でn人です.彼らは自分が持っている苗木を全部植えるつもりだ.しかし、彼らは1つの困難に直面しました:ある苗木は比較的に大きくて、ある位置は近すぎて、2本の木が植えた後にぶつかってしまいます.彼らは木を丸く見て、彼らが探している位置に丸い心を持っています.2本の木が対応する円が交差すると、この2本の木は同時に植えるのに適していません(接線は影響を受けません).2本の木の衝突と呼ばれます.明ちゃんと友达はまず合計して、その中の一部の木だけを植えて、互いに衝突しない木を保証することにしました.彼らは同時にこれらの木が覆う面積と(円面積と)最大を望んでいる.
入力フォーマット
入力された最初の行は、人数、すなわち植樹を準備する位置数を表す整数nを含む.次にn行、各行の3つの整数x,y,rは、空き地上の木の横、縦座標、半径を表す.
出力フォーマット
出力行には、衝突せずに植樹できる面積と整数が含まれます.各木の面積が円周率の整数倍であるため、答えを円周率で割った値(整数であるべき)を出力します.
サンプル入力
6 1 1 2 1 4 2 1 7 2 4 1 2 4 4 2 4 7 2
サンプル出力
12
評価用例の規模と約束
30%の評価例について、1<=n<=10;60%の評価例について、1<=n<=20;すべての評価例について、1<=n<=30、0<=x、y<=1000、1<=r<=1000である.
コミットコード
  。。。