Advertisement

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

阅读量:

第一道题:打印栅栏(打印网格) AC

复制代码
 #include <iostream>

    
 #include <algorithm>
    
 using namespace std;
    
 int n, m;
    
 int main() {
    
 	scanf("%d%d", &n, &m);
    
 	for (int i = 1; i <= n; i++) {
    
 		for (int j = 1; j <= m; j++)
    
 			printf("+-");
    
 		puts("+");
    
 		for (int j = 1; j <= m; j++)
    
 			printf("| ");
    
 		puts("|");
    
 	}
    
 	for (int j = 1; j <= m; j++)
    
 		printf("+-");
    
 	puts("+");
    
 	return 0;
    
 }

第二道题:合成游戏 AC

复制代码
 #include <iostream>

    
 #include <algorithm>
    
 using namespace std;
    
 typedef long long LL;
    
 LL n, x, sum;
    
 int main() {
    
 	scanf("%lld", &n);
    
 	for (int i = 1; i <= n; i ++) {
    
 		scanf("%lld", &x);
    
 		sum += x;
    
 	}
    
 	LL ans = 1;
    
 	while (ans <= sum)
    
 		ans *= 2;
    
 	printf("%lld\n", ans/2);
    
 	return 0;
    
 }

第三道题:循环节的判定 AC

复制代码
 #include <iostream>

    
 #include <algorithm>
    
 using namespace std;
    
 string s, a, b;
    
 int main() {
    
 	cin >> s >> a;
    
 	int len = s.size() / a.size();
    
 	for (int i = 1; i <= len; i++)
    
 		b += a;
    
 	if (s == b) puts("Yes");
    
 	else puts("No");
    
 	return 0;
    
 }

第四道题:切香肠 AC

复制代码
 #include <iostream>

    
 #include <algorithm>
    
 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;
    
 	scanf("%d%d", &n, &k);
    
 	printf("%d\n", f(n, k));
    
 	return 0;
    
 }

第五道题:自修教室 AC

复制代码
 #include <iostream>

    
 #include <algorithm>
    
 using namespace std;
    
 const int N = 1e6 + 7;
    
 int n, a[N], sum[N];
    
 int main() {
    
 	scanf("%d", &n);
    
 	while (n--) {
    
 		int s, t;
    
 		scanf("%d%d", &s, &t);
    
 		a[s] += 1;
    
 		a[t+1] -= 1;
    
 	}
    
 	int mx = 0;
    
 	for (int i = 1; i <= 1e6; i ++) {
    
 		sum[i] = sum[i-1] + a[i];
    
 		mx = max(mx, sum[i]);
    
 	}
    
 	printf("%d\n", mx);
    
 	return 0;
    
 }

若有更好的解,请私信许我~

全部评论 (0)

还没有任何评论哟~