牛客周赛Round31-小白感悟

第一题

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

小红拿到了一个字符串,她发现这个字符串可能是她自己的名字"kou",于是想将其替换成小紫的名字"yukari"。你能帮帮她吗?

签到题很简单

c++版

#include
using namespace std;
int main(){
    string s;
    cin>>s;
    cout<<((s=="kou")?"yukari":s);
}

java:

import java.util.Scanner;
 
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str = sc.next();
        System.out.println(str.replace("kou","yukari"));
    }
}

第二题:

小红拿到了一个正整数x,她想知道x有多少个不同的素因子,你能帮帮她吗?

这道题的要点在于读题:是要连续的几个因子,而不是所有的因子

c++:

void sol() {
    cin >> n;
    for(ll i = 2; i * i <= n; i++) {
        if(n % i == 0) {
            t++;
            while(n % i == 0) n /= i;
        }
    }
    if(n > 1) t++;
    cout << t;
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	sol();
	return 0;
}

第三题:

小红的字符串中值

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

小红定义一个长度为奇数的字符串的“中值”为中间那个字符。例如"kou"的中值是'o'。
现在小红拿到了一个字符串,她想知道某个字符是多少个子串的中值。你能帮帮她吗?

思路:也就是一个字符算一个中值,以这个字符为对称轴,看他两边的字符最多有多少对称,也就是去最小值,两边字符的最小值

c++代码如下:

#include
using namespace std;
int main(){
    int n;
    cin>>n;
    char t;
    cin>>t;
    string s;
    cin>>s;
    long long int i,sum=0;
    for(i=0;i

第四题:

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

小红拿到了一个数组,初始数组为空,她希望你实现以下两种操作:
1. 输入1 x y,将x插入在元素y的右边。保证此时数组中没有元素等于x,且数组中存在一个y。特殊的,如果将x插入在数组的最左边,则y=0
2. 输入2 x,将元素x删除。

请你在所有操作后输出整个数组。

这道题看了个大佬的代码,果然思路决定一切

在步骤1中x,y的数量和x,y的插入也有关系,所以使用map这个数据结构来解决

c++代码如下:

int main() {
    int Q;
    cin >> Q;
    map::iterator> m;
    list q;
    while(Q--) {
        int op;
        cin >> op;
        if (op == 1) {
            int x, y;
            cin >> x >> y;
            if (y == 0) {
                q.pf(x);
                m[x] = q.begin();
            } else {
                auto it = m[y];
                q.insert(next(it), x);
                m[x] = next(it);
            }
        } else {
            int x;
            cin >> x;
            q.erase(m[x]);
            m.erase(x);
        }
    }
     
    printf("%d\n", q.size());
    for (auto c: q) printf("%d ", c);
     
    return 0;
}

你可能感兴趣的:(牛客赛事,c++)