第一题:
先打印‘L’,然后用一个循环语句打印‘o’,最后打印“ng”即可。
代码如下:
#include<iostream>
using namespace std;
int main()
{int N;cin >> N;cout << 'L';for (int i = 0; i < N; i++)cout << 'o';cout << "ng" << endl;return 0;
}
第二题:
因为题目给出的数据很大,可以当作字符串存入。又因为单双数的判断取决于最末尾一个数,所以可以直接判断字符串中最末尾的数是单数还是双数。
代码如下:
#include<iostream>
using namespace std;int main() {int N;cin >> N;string arr;for (int i = 0; i < N; i++){cin >> arr;if ((arr[arr.length() - 1] - '0') % 2)cout << "odd" << endl;elsecout << "even" << endl;}return 0;
}
第三题:
题目的意思是每轮提问都要有从A到G难度的问题,只需将每个不同难度的问题都记录下个数再和提问次数m进行比较,个数大于等于m的不管,而小于m的,则记录相差的个数然后再进行累加即可得到答案。
代码如下:
#include<iostream>
using namespace std;int main() {int N;cin >> N;string arr;for (int i = 0; i < N; i++){int n, m;cin >> n >> m;cin >> arr;int count[7] = { 0 };for (int j = 0; j < n; j++){count[arr[j] - 'A']++;}int ans = 0;for (int j = 0; j < 7; j++){if (count[j] < m)ans += m - count[j];}cout << ans << endl;}return 0;
}
第五题:
可以输入读取三个整数 n, m, k。其中 n 居民数,m 表示天数,k 指定规则。初始化计数器 count 为0,用于记录满足条件的天数。遍历每一行,使用外层循环遍历每一行(共 m 行)。对于每一行,初始化一个计数器 countk 为0,用于记录当天 k 遵守次数。遍历每一列,使用内层循环遍历当前行的每个元素(共 n 个居民)。读取每个元素的值 p,并检查其是否等于目标值 k。如果是,则将 countk 增加1。检查条件:在内层循环结束后,检查 countk * 2 >= n。如果条件成立,则将 count 增加1。计算最终结果:外层循环结束后,将 count 乘以2,因为题目要求满足条件的行数需要占总行数的一半或更多。检查 count 是否大于或等于 m。如果是,则输出 "YES";否则输出 "NO"。
代码如下:
#include <iostream>
using namespace std;int main()
{int n, m, k;cin >> n >> m >> k;int count = 0;for (int i = 0; i < m; i++){int countk = 0;for (int j = 0; j < n; j++){int p;cin >> p;if (p == k)countk++;}if (countk * 2 >= n)count++;}count *= 2;if (count >= m)cout << "YES" << endl;elsecout << "NO" << endl;return 0;
}
第六题:
首先读取整数 N,表示字符串的长度然后读取字符串 S。接着读取整数 T,表示接下来有 T 次字符替换操作。对于每次替换操作,读取两个字符 op1 和 op2。如果 op1 和 op2 相同,则跳过这次操作(因为不需要做任何替换)。否则,遍历字符串 S,将所有等于 op1 的字符替换为 op2。最后输出经过所有替换操作后的字符串 S。
代码如下:
#include <iostream>
using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int N;cin >> N;string S;cin >> S;int T;cin >> T;for (int i = 0; i < T; i++){char op1, op2;cin >> op1 >> op2;if (op1 == op2)continue;for (char& c : S){if (c == op1){c = op2;}}}cout << S << endl;return 0;
}
第七题:
首先读取两个整数 n 和 m,n表示矩阵的大小(n x n) ,m操作的次数。然后初始化一个大小为 n x n 的二维数组 arr,并从标准输入中读取其元素。创建两个长度为 n 的数组 xx 和 yy,用于记录行和列的交换情况。初始时,这两个数组的值都设置为 0, 1, 2, ..., n - 1,即没有进行任何交换。循环 m 次,每次读取一个操作指令 op、x 和 y。如果 op 为 0,则交换 xx 数组中的第 x 个和第 y 个元素的值,这相当于交换了矩阵的第 x 列和第 y 列。如果 op 为 1,则交换 yy 数组中的第 x 个和第 y 个元素的值,这相当于交换了矩阵的第 x 行和第 y 行。根据 xx 和 yy 数组中的值,重新排列原矩阵 arr 的元素,并输出最终的矩阵。
代码如下:
#include <iostream>
using namespace std;
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int n, m;cin >> n >> m;int arr[n][n] = { 0 };for (int y = 0; y < n; y++) {for (int x = 0; x < n; x++) {cin >> arr[y][x];}}int xx[n], yy[n];for (int i = 0; i < n; i++)xx[i] = yy[i] = i;for (int i = 0; i < m; i++) {int op, x, y;cin >> op >> x >> y;if (x == y)continue;x--, y--;if (op == 0)swap(xx[x], xx[y]);if (op == 1)swap(yy[x], yy[y]);}for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {cout << arr[yy[i]][xx[j]] << " ";}cout << endl;}return 0;
}