本文最后更新于 192 天前,其中的信息可能已经有所发展或是发生改变。
问题描述
小蓝和小桥是游戏世界里的两个好友,他们正在玩一个有趣的挑战。他们手中有一个长度为 nn 的神秘物品序列,每个物品都有一个数字 aiai 表示它的价值。他们可以执行以下操作:
- 选择一个物品,并将其价值加 11。
小蓝和小桥希望通过若干次操作使得这个序列的价值之和与价值的积都不为 00。
请你帮他们计算,至少需要执行多少次操作才能完成这个挑战。
输入格式
第一行包含一个整数 tt(1≤t≤1001≤t≤100),表示测试用例的数量。
接下来 tt 行,每行包含两行数据,第一行为一个整数 nn(1≤n≤10001≤n≤1000),表示物品的数量。第二行为 nn 个整数 a1,a2,…,ana1,a2,…,an(−1000≤ai≤1000−1000≤ai≤1000),表示初始的物品价值。
输出格式
对于每个测试用例,输出一行一个整数,表示至少需要执行的操作次数。
样例输入
2
2
0 0
3
-1 0 1
样例输出
2
1
运行限制
语言 | 最大运行时间 | 最大运行内存 |
---|---|---|
C++ | 1s | 256M |
C | 1s | 256M |
Java | 2s | 256M |
Python3 | 3s | 256M |
代码展示
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
int n;cin>>n;
while(n--){
int m,sum = 0,t = 0,x = 0;cin>>m;
int q[m];
for(int i = 0;i<m;i++){
cin>>q[i];sum+=q[i];
if(q[i]==0) t++;
}
if(t!=0){
if(sum<0&&t==abs(sum)) x = t+1;
else x = t;
}
else if(t==0&&sum==0) x = 1;
else x = 0;
cout<<x<<endl;
}
return 0;
}
评价
蓝桥杯的考点,真是显示了代码的“魅力”。
我还以为编程考的是算法的掌握,原来是考边界值的处理,你等着,
再给我两个月时间!!