Advertisement

上海市计算机学会2020年5月月赛(丙组)

阅读量:

第一道题:戴口罩 AC

复制代码
 #include <algorithm>

    
 #include <iostream>
    
 using namespace std;
    
 int n, d = 3, k = 10;
    
 int main() {
    
 	scanf("%d", &n);
    
 	while (k != n) {
    
 		k--;
    
 		if (d%7==1 || d%7==2) k += 7;
    
 		d++;
    
 	}
    
 	printf("%d", d-3);
    
 	return 0;
    
 }

第二道题:计算GPA AC

复制代码
 #include <algorithm>

    
 #include <iostream>
    
 using namespace std;
    
 string s;
    
 double gpa = 0;
    
 int ct = 0;
    
 int main() {
    
 	getline(cin, s);
    
 	for (int i = 0; i < s.size(); i++) {
    
 		if (s[i] == '+')
    
 			gpa += 0.3;
    
 		else if (s[i] == '-')
    
 			gpa -= 0.3;
    
 		else {
    
 			gpa += 69 - s[i];
    
 			ct++;
    
 		}
    
 	}
    
 	printf("%.2lf", gpa / ct);
    
 	return 0;
    
 }

第三道题:

复制代码
 #include <algorithm>

    
 #include <iostream>
    
 using namespace std;
    
 const int N = 107;
    
 char a[N][N];
    
 int n, m;
    
 int f(int x, int y) {
    
 	int ans = 0;
    
 	for (int i = x-1; i <= x+1; i++)
    
 		for (int j = y-1 ; j <= y+1; j++)
    
 			if (a[i][j] == '*') ans++;
    
 	return ans;
    
 }
    
 int main() {
    
 	scanf("%d%d", &n, &m);
    
 	for (int i = 1; i <= n; i++)
    
 		for (int j = 1; j <= m; j++)
    
 			cin >> a[i][j];
    
 	for (int i = 1; i <= n; i++) {
    
 		for (int j = 1; j <= m; j++) {
    
 			if (a[i][j] == '*') cout << "*";
    
 			else cout << f(i, j);
    
 		}
    
 		puts("");
    
 	}
    
 	return 0;
    
 }

第四道题:增长与翻倍 AC

复制代码
 #include <algorithm>

    
 #include <iostream>
    
 using namespace std;
    
 int s, t, ans = 0;
    
 int main() {
    
 	scanf("%d%d", &s, &t);
    
 	while (s < t) {
    
 		if (t%2 == 1) t--;
    
 		else if (t/2 >= s) t /= 2;
    
 		else break;
    
 		ans++;
    
 	}
    
 	ans += t-s;
    
 	printf("%d", ans);
    
 	return 0;
    
 }

第五道题:最大回撤 AC

复制代码
 #include <algorithm>

    
 #include <iostream>
    
 using namespace std;
    
 int price = -1e5, loss = -1e9;
    
 int main() {
    
 	int n, a;
    
 	scanf("%d", &n);
    
 	for (int i = 1; i <= n; i ++) {
    
 		scanf("%d", &a);
    
 		price = max(price, a);
    
 		loss = max(loss, price - a);
    
 	}
    
 	printf("%d\n", loss);
    
 	return 0;
    
 }

若有更好的解,欢迎评论或私信与我~

全部评论 (0)

还没有任何评论哟~