上海市计算机学会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)
还没有任何评论哟~
