文章目录
2024年第七届传智杯程序设计挑战赛初赛第一场
除了最后一题以外其他都比较简单
A-吃糖果(B组、C组)
签到题
排序从小到大拿即可
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, k;
cin >> n >> k;
vector<int> a(n);
for (int i = 0; i < n; i ++) cin >> a[i];
sort(a.begin(), a.end());
for (int i = 0; i < n; i ++)
{
if (k >= a[i]) k -= a[i];
else return cout << i << '\n', 0;
}
cout << n << '\n';
return 0;
}
B-汤姆和杰瑞(A组、C组)
签到题
直接输出 b − a b - a b−a 和 b b b 即可
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << b - a << ' ' << b << '\n';
return 0;
}
C-游游的重组偶数(A组、B组、C组)
签到题
对于每一个数字,从后往前开始找,如果找到偶数位,则和最后一位交换即可
#include <bits/stdc++.h>
using namespace std;
void solve()
{
string s;
cin >> s;
for (int i = s.size() - 1; i >= 0; i --)
if ((s[i] - '0') % 2 == 0)
{
swap(s[i], s.back());
return cout << s << '\n', void();
}
cout << -1 << '\n';
}
int main()
{
int t;
cin >> t;
while (t --) solve();
return 0;
}
D-开心还是难过(B组、C组)
签到题
遍历一遍字符串,数出 :-)
和 :-(
的个数即可
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
getline(cin, s);
int a = 0, b = 0;
for (int i = 0; i + 2 < s.size(); i ++)
{
string t = s.substr(i, 3);
if (t == ":-)") a ++;
else if (t == ":-(") b ++;
}
if (a == 0 && b == 0) cout << "None" << '\n';
else if (a > b) cout << "Happy" << '\n';
else if (a < b) cout << "Sad" << '\n';
else cout << "Just so so" << '\n';
return 0;
}