一、vector 基本操作
题目描述
给定一个长度为 n n n 的序列 a a a。现在有 m m m 次操作:
1 q
:删除除能够整除 q q q 的元素
2
:将序列翻转后输出,若元素个数为 0 0 0,则输出"null"
。
3
:输出序列当前的元素个数
输入描述
m + 2 m+2 m+2 行。
第 1 1 1 行为正整数 n , m n,m n,m。
第 2 2 2 行为序列 a a a。
接下来 m m m 行,为 m m m 次操作。
输出描述
输出答案。
样例
输入
5 4 8 6 3 7 5 2 1 2 3 2
输出
5 7368 3 3 7 5
参考答案
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n, m;
vector <int> a;
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
int tmp;
cin >> tmp;
a.push_back(tmp);
}
for (int i = 1; i <= m; i++)
{
int comm;
cin >> comm;
if (comm == 1)
{
int q;
cin >> q;
for (int i = 0; i < a.size(); i++)
{
if (a[i] % q == 0)
{
a.erase(a.begin()+i);
i--; // 一定要把i--,否则会跳过下一个元素
}
}
}
else if (comm == 2)
{
if (a.empty())
{
cout << "null\n";
}
else
{
reverse(a.begin(), a.end());
for (int i = 0; i < a.size(); i++)
{
cout << a[i] << " ";
}
cout << endl;
}
}
else
{
cout << a.size() << endl;
}
}
return 0;
}
二、杨辉三角
#include <iostream>
#include <vector>
#include <cstdio>
using namespace std;
int n;
vector <vector <int> > a(2005);
int main()
{
freopen("tria.in", "r", stdin);
freopen("tria.out", "w", stdout);
cin >> n;
for (int i = 1; i <= n; i++)
{
a[i].resize(i+1); // 记得拓宽大小
for (int j = 1; j <= i; j++)
{
if (j == 1 || i == j)
{
a[i][j] = 1;
}
else
{
a[i][j] = (a[i-1][j-1] + a[i-1][j]) % 1000;
}
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
fclose(stdin);
fclose(stdout);
return 0;
}
三、中位数
题目描述
给定一个长度为 n n n 的非负整数序列 < a 1 , a 2 , a 3 , … , a n > <a_1,a_2,a_3,…,a_n> <a1,a2,a3,…,an>,求前奇数项的中位数(即平均数)。
输入描述
2 2 2 行。
第 1 1 1 行一个正整数 n n n。
第 2 2 2 行一个序列 a a a。
输出描述
n + 1 2 \frac{n+1}{2} 2n+1 行,第 k k k 行是第 1 1 1 至第 2 k − 1 2k-1 2k−1 个数字的中位数(即平均数)。
样例
输入
7 1 3 5 7 9 11 6
输出
1 3 5 6
参考答案
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n;
int sum;
int average;
vector <int> a;
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
int tmp;
cin >> tmp;
a.push_back(tmp);
sort(a.begin(), a.begin()+i);
if (i % 2 == 1)
{
cout << a[i/2] << endl;
}
}
return 0;
}