c++本题要求计算给定的一系列正整数中奇数的和。
时间: 2024-03-20 07:43:54 浏览: 137
好的,这个问题很简单。你可以使用一个循环来遍历这些正整数,然后判断每个数是否为奇数,如果是奇数就加到一个变量中,最后输出这个变量即可。以下是一个简单的C++代码示例:
```
#include <iostream>
using namespace std;
int main() {
int n, sum = 0;
cin >> n;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
if (x % 2 == 1) {
sum += x;
}
}
cout << sum << endl;
return 0;
}
```
在这个示例中,我们首先输入一个整数n,表示接下来有n个正整数。然后使用一个循环来输入这n个正整数,并且判断每个数是否为奇数,如果是奇数就加到变量sum中。最后输出变量sum即可。
相关问题
本题要求计算给定的一系列正整数中奇数的和。
算法1:遍历求和
遍历给定的一系列正整数,如果是奇数就加入到总和中。
时间复杂度:O(n)。
C++ 代码
class Solution {
public:
int sumOddLengthSubarrays(vector<int>& arr) {
int sum = 0;
for (int i = 0; i < arr.size(); i++) {
if (arr[i] % 2 == 1) {
sum += arr[i];
}
}
return sum;
}
};
算法2:数学公式
根据数学公式,如果一个正整数数组的长度为n,那么它的所有奇数子数组的和为:
(1 + n) / 2 * ((n + 1) / 2)
时间复杂度:O(1)。
C++ 代码
class Solution {
public:
int sumOddLengthSubarrays(vector<int>& arr) {
int n = arr.size();
int sum = 0;
for (int i = 0; i < n; i++) {
int odd = (i + 1) / 2, even = i / 2 + 1;
int total_odd = odd * (n - i), total_even = even * (n - i);
sum += (total_odd + total_even) * arr[i];
}
return sum;
}
};
本题要求计算给定的一系列正整数中奇数的和。 输入格式: 输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。 输出格式: 在一行中输出正整数序列中奇数的和。 输入样例: 8 7 4 3 70 5 6 101 -1 输出样例: 116
题目描述
给定一系列正整数,计算其中奇数的和。
输入格式
输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。
输出格式
在一行中输出正整数序列中奇数的和。
输入样例
8 7 4 3 70 5 6 101 -1
输出样例
116
算法1
(模拟) $O(n)$
根据题目要求,输入的数字中只有正整数才需要处理,因此只需要判断输入的数字是否为正整数,如果是,则判断是否为奇数,如果是,则将其加入到奇数的和中。
时间复杂度
输入的数字个数为 n,每个数字的处理时间为 O(1),因此总时间复杂度为 O(n)。
C++ 代码
算法2
(模拟) $O(n)$
时间复杂度
参考文献
C++ 代码
阅读全文