学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!
附上汇总贴:小猴编程C++周赛 | 汇总-CSDN博客
【题目描述】
小A认为,三个连续的奇数是非常的优秀三元组。
现在给你 n 个整数 a1、a2、……、an,小A想知道能找到多少个不同的优秀三元组。
即你需要统计出有多少不同的数对 (i,j,k) 满足 ai、aj、ak 均是奇数,并且满足 j=i+1,k=j+1,1≤i,j,k≤n。
【输入】
第一行,一个正整数 n。
第二行,包含 n 个用空格分隔的正整数 ai。
【输出】
一行一个非负整数,表示有多少不同的优秀三元组。
【输入样例】
4
2 6 4 1
【输出样例】
0
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int n, a[1000005], ans=0;
int main()
{
cin >> n; // 输入n
for (int i=1; i<=n; i++) { // 记录n个数
cin >> a[i];
}
int cnt = 0; // 定义奇数的统计
for (int i=1; i<=n; i++) { // 遍历n个数
if (abs(a[i])%2==1) cnt++; // 如果a[i]的绝对值为奇数,cnt自增1
else { // 否则
if (cnt>=3) { // 如果cnt大于等于3了,就计算有多少对优秀三元组,并累加到ans中
ans += (cnt-2);
cnt = 0; // 并将cnt重置为0
}
cnt = 0; // 如果cnt小于3,则直接将cnt重置为0
}
}
if (cnt>=3) { // 因为最后一个数可能会是奇数,但没有进行优秀三元组累加,所以这里再做一次cnt判断
ans += (cnt-2);
}
cout << ans << endl; // 输出结果
return 0;
}
【运行结果】
4
2 6 4 1
0