学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!
附上汇总贴:小猴编程C++ | 汇总-CSDN博客
【题目描述】
回文数列是一类特殊的数列。简单来说,如果一个数列是回文数列,那么它与它颠倒过来的数列是一样的,例如:
1,2,3,4,5,4,3,2,1
5,4,3,2,1,1,2,3,4,5
现在小猴有一个n项的数列 a 1 , a 2 , … , a n a_1,a_2,\dots,a_n a1,a2,…,an,你可以进行任意多次操作:选择任意一项,将其数值加1或者减1。
请问最少需要多少次操作,才可以将这个数列变成一个回文数列。
【输入】
第一行一个正整数n;
第二行n个正整数,从左到右依次表示数列对应项 a 1 , a 2 , … , a n a_1,a_2,\dots,a_n a1,a2,…,an的值。
【输出】
一个整数表示答案。
【输入样例】
3
1 2 3
【输出样例】
2
【代码详解】
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
long long n, ans, val[N];
int main()
{
cin >> n;
for (int i=1; i<=n; i++) {
cin >> val[i];
}
for (int i=1; i<=n/2; i++) {
ans += abs(val[i] - val[n-i+1]);
}
cout << ans << endl;
return 0;
}
【运行结果】
3
1 2 3
2