牛客网NC218480统计正负数个数
牛客网NC218480统计正负数个数
题目描述
给定n个整数,判断其中正数和负数分别有多少个。
输入格式
- 第一行输入一个整数n (1≤n≤10^5)
- 第二行输入n个整数ai (1≤i≤n),保证ai在32位有符号整数范围内
输出格式
- 第一行输出"positive:"后跟正数的个数
- 第二行输出"negative:"后跟负数的个数
示例
输入:
10
-1 2 3 -6 7 8 -1 6 8 10
输出:
positive:7
negative:3
解题思路
题目要求统计一组数中正数和负数的个数,思路非常直接:
- 读取输入的n个数字
- 统计正数和负数的个数
- 按照指定格式输出结果
代码实现
#include <bits/stdc++.h>
using namespace std;int main(){int n;cin >> n;int a;int positive = 0, negative = 0;for(int i = 1; i <= n; i++){//输入a并且判断正负。cin >> a;if(a < 0) negative++;if(a > 0) positive++; }printf("positive:%d\nnegative:%d", positive, negative);return 0;
}
代码解析
- 首先引入必要的头文件
<bits/stdc++.h>
,这是一个包含了大部分C++标准库的头文件 - 声明变量n来存储输入的整数个数
- 使用两个计数器
positive
和negative
分别记录正数和负数的个数 - 通过循环读取n个整数,并根据其正负性增加相应的计数器
- 最后按照题目要求的格式输出结果
时间复杂度分析
- 时间复杂度:O(n),其中n是输入的整数个数
- 空间复杂度:O(1),只使用了常数级别的额外空间
注意事项
- 题目中可能存在0,但根据题意,0既不是正数也不是负数,所以不计入任何一类
- 使用
if(a < 0)
和if(a > 0)
两个独立的条件判断,而不是else
,确保逻辑清晰 - 输出格式必须严格按照题目要求,包括冒号和换行
总结
这是一道简单的模拟题,关键在于理解题意并按照要求输出结果。通过一次遍历即可得到答案,是入门级别的编程练习题。