输入:
只有一组案例。
两个正整数n和m。
输出:
数组每个元素,每两个元素之间有一个空格,不要换行。
样例输入:
10 7
样例输出:
6 2 0 5 0 2 6 6 2 0
提示:
数组原来是0 2 6 5 6 2 0 0 2 6,0是最小值,6是最大值。故所有的0变成6,所有的6变成0。
变换后的数组是6 2 0 5 0 2 6 6 2 0
#include <iostream>
using namespace std;
int main()
{
int n, m;
cin >> n;
int* a= new int[n];
int* pa = a;
cin >> m;
for (int i = 0; i < n; i++)
{
*(pa+i) = (i * i + i) % m;
}
int max = *pa;
int min = *pa;
for (int i = 1; i < n; i++)
{
if (*(pa+i) > max)
{
max = *(pa+i);
}
if (*(pa+i) < min)
{
min = *(pa+i);
}
}
for (int i = 0; i < n; i++)
{
if (*(pa+i) == max)
{
*(pa+i) = min;
}
else if (*(pa+i) == min)
{
*(pa+i) = max;
}
}
for (int i = 0; i < n; i++)
{
if (i < n - 1)
{
cout << *(pa + i) << " ";
}
else
{
cout << *(pa + i);
}
}
delete[] a;
return 0;
}
程序通过计算每个元素的(i*i+i)%m,实现数组中0变6,6变0。展示了C++中数组操作和条件判断的技巧。

被折叠的 条评论
为什么被折叠?



