A—游游的7的倍数
A-游游的7的倍数_牛客周赛 Round 3 (nowcoder.com)
思路:由于是7的倍数,所以在个位遍历0到9插入,总会有一个数能被7整除。
代码:
#include <iostream>
using namespace std;
typedef long long ll;
int main()
{
ll x;
cin >> x;
for(int i = 0; i <= 9; i++){
if((x * 10 + i) % 7 == 0){
cout << x * 10 + i << endl;
break;
}
}
return 0;
}
B—游游的字母串
B-游游的字母串_牛客周赛 Round 3 (nowcoder.com)
思路:这道题的难点就在于如何确定要靠近的那个字母,如果是遍历整个字符串,时间复杂度是O(n^2), 会导致TLE。然后我们可以知道字母就26个,所以这里遍历26个字母。时间复杂度就O(26*n),就可以过了。
代码:
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
int main()
{
cin.tie();
string s;
cin >> s;
ll res = 1e9;
for(char i = 'a'; i <= 'z'; i++){
ll nums = 0;
for(int j = 0; j < s.size(); j++){
ll cnt = abs(i - s[j]);
nums += min(cnt, 26 - cnt);
}
res = min(res, nums);
}
cout << res << endl;
return 0;
}
C—游游的水果大礼包
C-游游的水果大礼包_牛客周赛 Round 3 (nowcoder.com)
思路:遍历每一种a,b大礼包的情况,不断比较得到最大值。
代码:
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
int main()
{
ll n, m, a, b;
cin >> n >> m >> a >> b;
ll mx = 0;
for(int i = 0; 2 * i <= n && i <= m; i++){
int x = n - 2 * i;
int y = m - i;
mx = max(mx, a * i + min(x, y / 2) * b);
}
cout << mx << endl;
return 0;
}