Hướng dẫn giải của [Beginner Free Contest 02] DEMSO
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Hướng dẫn giải
Cho dãy N số nguyên, đếm số lượng số âm và số lượng số dương trong dãy.
Sub 1: Đọc chuỗi và đếm dấu — ~O(n)~
Bài này chỉ có một cách đếm dấu trực tiếp, nên chỉ viết một sub (lời giải đầy đủ). Không dùng long long vì giá trị có thể lên tới 10^30 và sẽ tràn số. Thay vào đó, đọc mỗi phần tử dưới dạng chuỗi: nếu ký tự đầu là - thì là số âm; nếu khác 0 và không âm thì là số dương. Đạt 10/10 test.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
int neg = 0, pos = 0;
for (int i = 0; i < n; i++) {
// Doc duoi dang chuoi vi |a| co the len toi 10^30, khong vua long long.
string s;
cin >> s;
if (s[0] == '-') neg++; // so am
else if (s != "0") pos++; // so duong (bo qua so 0)
}
cout << neg << " " << pos << endl;
return 0;
}
Bình luận