2022年蓝桥杯C++c组真题 B题纸张尺寸 半独立完成

29 阅读1分钟

B题.纸张尺寸

#define _CRT_SECURE_NO_WARNINGS 1.
#include <bits/stdc++.h>
using namespace std;
string s;
int a[10], b[10];

bool check(int a, int b) {
	return a > b;
}

void solve() {
	//长
	for (int i = 1; i < 10; i++) {
		a[i] = a[i - 1] / 2;
	}

	for (int i = 0; i < 10; i++)
		b[i] = 841;

	if (check(a[s[1] - '0'], b[s[1] - '0'])) {
		cout << a[s[1 - '0']] << endl << b[s[1] - '0'] << endl;
	} else {
		cout << b[s[1] - '0'] << endl << a[s[1] - '0'] << endl;
	}
}

int main() {
	cin >> s;
	a[0] = 1189;
	solve();
	return 0;
}

image.png

也就是只过了给的两个样例,后面的数据都没过,说明整体逻辑可能出了问题。其实观察样例发现当前Ai的长其实上A[i-1]的宽,A[i]的宽其实是A[i-1]的长/2,我理解错题意了,修改之后就过了:

#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int>  PII;
#define length first
#define width second
vector<PII>v(10);

int main() {
	string s;
	cin >> s;

	v[0].length = 1189, v[0].width = 841;

	for (int i = 1; i < 10; i++) {
		v[i].width = v[i - 1].length / 2;
		v[i].length = v[i - 1].width;

	}

	cout << v[s[1] - '0'].length << endl << v[s[1] - '0'].width << endl;
	return 0;
}

image.png