上海市计算机学会2020年3月月赛(丙组)
 发布时间 
 阅读量: 
 阅读量 
第一道题:打鱼还是晒网 AC
 #include <iostream>
    
 #include <algorithm>
    
 using namespace std;
    
 int n;
    
 int main() {
    
 	scanf("%d", &n);
    
 	int m = n % 5;
    
 	if (m==1 || m==2 || m==3) {
    
 		printf("Fishing");
    
 		return 0;
    
 	} else {
    
 		printf("Lying");
    
 		return 0;
    
 	}
    
 	return 0;
    
 }
        第二道题:数字加密 AC
 #include <iostream>
    
 #include <algorithm>
    
 using namespace std;
    
 string s;
    
 int main() {
    
 	getline(cin, s);
    
 	int len = s.size();
    
 	for (int i = 0; i < len; i++)
    
 		s[i] = (9 - s[i]) + 96;
    
 	int temp = s[1];
    
 	s[1] = s[2];
    
 	s[2] = temp;
    
 	temp = s[0];
    
 	s[0] = s[3];
    
 	s[3] = temp;
    
 	cout << s;
    
 	return 0;
    
 }
        第三道题:双质数 AC
 #include <iostream>
    
 #include <algorithm>
    
 using namespace std;
    
 bool isPrime(int x) {
    
 	if (x < 2) return false;
    
 	for (int i = 2; i <= x/i; i++) {
    
 		if (x%i == 0)
    
 			return false;
    
 	}
    
 	return true;
    
 }
    
 int main() {
    
 	int a, b;
    
 	scanf("%d%d", &a, &b);
    
 	bool flag = true;
    
 	for (int i = a; i <= b; i++) {
    
 		if (isPrime(i) && isPrime(i/10)) {
    
 			flag = false;
    
 			printf("%d\n", i);
    
 		}
    
 	}
    
 	if (flag == 1) puts("None");
    
 	return 0;
    
 }
        第四道题:连乘问题 AC
 #include <algorithm>
    
 #include <iostream>
    
 using namespace std;
    
 const int N = 1e5 + 7, mod = 1e4;
    
 int n, a[N], front[N], back[N];
    
 int main() {
    
 	scanf("%d", &n);
    
 	for (int i = 1; i <= n; i++)
    
 		scanf("%d", a + i);
    
 	front[0] = 1;
    
 	for (int i = 1; i <= n; i++)
    
 		front[i] = (front[i-1]*a[i]) % mod;
    
 	back[n + 1] = 1;
    
 	for (int i = n; i >= 1; i--)
    
 		back[i] = (back[i+1]*a[i]) % mod;
    
 	for (int i = 1; i <= n; i++) {
    
 		int ans = 1;
    
 		ans = front[i-1] * back[i+1] % mod;
    
 		printf("%d\n", ans);
    
 	}
    
 	return 0;
    
 }
        第五道题:救援争先 AC
 #include <iostream>
    
 #include <algorithm>
    
 using namespace std;
    
 const int N = 1005;
    
 int n, x, y;
    
 char ch;
    
 struct team {
    
 	int depart, arrive, id;
    
 } t[N];
    
 bool cmp(team a, team b) {
    
 	if (a.arrive < b.arrive) return true;
    
 	if (a.arrive == b.arrive) {
    
 		if (a.depart < b.depart) return true;
    
 		if (a.depart == b.depart) {
    
 			if (a.id < b.id) return true;
    
 		}
    
 	}
    
 	return false;
    
 }
    
 int main() {
    
 	scanf("%d", &n);
    
 	for (int i = 1; i <= n; i++) {
    
 		scanf("%d%c%d", &x, &ch, &y);
    
 		t[i].depart = x*60 + y;
    
 		scanf("%d%c%d", &x, &ch, &y);
    
 		t[i].arrive = t[i].depart + x*60 + y;
    
 		t[i].id = i;
    
 	}
    
 	sort(t + 1, t + 1 + n, cmp);
    
 	for (int i = 1; i <= n; i++)
    
 		printf("%d\n", t[i].id);
    
 	return 0;
    
 }
        若有更好的解,欢迎评论或私信与我~
全部评论 (0)
 还没有任何评论哟~ 
