本题不难,在把数据存到数组里面时找到最小值,然后遍历数组 ans += nums[pos] - 最小值
cpp复制代码
#include <iostream>
using namespace std;
int nums[100005];
int main()
{
int n = 0; cin>>n;
int minn = 100000;
for(int i = 1;i <= n;i++) {cin>>nums[i];
minn = min(nums[i],minn);
}
long long ret = 0;
for(int i = 1;i <= n;i++)
{
ret += nums[i] - minn;
}
cout << ret <<endl;
return 0;
}
#include <iostream>
#include <string>
#include <set>
using namespace std;
int fun(const std::string& str) {
int ret = 0;
for (char c : str) {
ret *= 2;
ret += (c - '0');
}
return ret;
}
int main()
{
int size = 0;
string str;
cin >> size; cin >> str;
int len = 1;
while (len <= size) {
int left = 0, right = len - 1;
set<int> ss;
int t = 1 << (len - 1);
if (len == 1) t++;
for (; right < size; right++, left++) {
if (len != 1 && str[left] == '0') continue;
ss.insert(fun(str.substr(left, len)));
// cout << str.substr(left, len) << ' ';
if (ss.size() == t)
break;
}
if (ss.size() < t)
{
int begin = 1 << (len - 1), end = 1 << len;
if (len == 1) begin = 0;
while (ss.count(begin)) {
begin++;
}
cout << begin << endl;
return 0;
}
len++;
}
return 0;
}