上海市计算机学会月赛2021年2月丙组

打印栅栏

#include 
using namespace std;

int main() {
     
	int n, k;
	cin >> n >> k;
	
	for (int i = 1; i <= n; i ++) {
     
		cout << '+';
		for (int j = 1; j <= k; j ++) {
     
			cout << '-';
		}
	}
	cout << '+';	
	
	return 0;
}

合成游戏

#include 
#include 
using namespace std;

int main() {
     
	long long n, x, sum = 0;
	
	cin >> n;
	for (int i = 1; i <= n; i ++) {
     
		cin >> x;
		sum += x;
	}	
	
	long long ans = 1;
	while (ans <= sum) {
     
		ans *= 2;
	}
	 
	cout << ans / 2;
	
	return 0;
}

循环节的判定

#include 
using namespace std;

int main() {
     
	string s, a;
	cin >> s >> a;
	
	int t = s.size()/a.size();
	
	string b = "";
	for (int i = 1; i <= t; i ++) {
     
		b += a;
	}

	if (s == b) cout << "Yes";
	else cout << "No";
	
	return 0;
}

切香肠

#include 
using namespace std;

int f(int n, int k) {
     
	if (n%k == 0) return 0;
	if (k%n == 0) return (k/n-1) * n;
	else return k/n*n + f(n%k, k%n);	
}

int main() {
     
	int n, k;
	cin >> n >> k;
	
	cout << f(n, k);
	return 0;
}

自修教室

#include 
using namespace std;

const int N = 1e6 + 1;
int n, a[N], sum[N];

int main() {
     
	cin >> n;
	
	while (n --) {
     
		int s, t;
		cin >> s >> t;
		a[s] += 1;
		a[t+1] -= 1;
	}
	
	int maxx = 0;
	for (int i = 1; i <= 1e6; i ++) {
     
		sum[i] = sum[i-1] + a[i];
		maxx = max(maxx, sum[i]);
	}
	
	cout << maxx;

	return 0;
}

你可能感兴趣的